我有一个 SQLite 数据访问提供程序库,它仅通过单例类提供对 SQLite 数据库 (.db) 的非 SQL 编程访问。这个库实际上使用 SQLiteCommands 来实现这种访问。问题是用于 SELECT 查询的 SQLiteDataReader 的 ExecuteReader 可以与 WinForms 和控制台测试应用程序一起正常工作,但在 Windows 服务中使用时会给出 null。服务和测试应用程序都使用相同的库。不抛出异常。看下面的示例代码:
private SQLiteConnection slConn = null;
public void Initialize()
{
try
{
slConn = new SQLiteConnection(CreateIQDBConnString(Path.GetFileNameWithoutExtension(GetRegistry(PROJECT_PATH_REG))));
slConn.Open();
if (slConn.State == System.Data.ConnectionState.Open)
{
InitializeTables();
}
}
catch (Exception e)
{
throw e;
}
}
public List<IIQDevice> GetDevices()
{
try
{
List<IIQDevice> devices = new List<IIQDevice>();
using (SQLiteCommand r = GetGetDevicesCommand())
{
SQLiteDataReader dr = r.ExecuteReader();
while (dr.Read())
{
devices.Add(dr.ToIQDevice());
}
}
return devices;
}
catch (Exception e)
{
throw e;
}
}
private SQLiteCommand GetGetDevicesCommand()
{
return new SQLiteCommand("SELECT * FROM IQDEVICES;", slConn);
}