我有一个SQLite数据访问提供程序库,它只通过单例类提供对SQLite数据库(.db)的非SQL编程访问。这个lib实际上使用SQLiteCommands来实现这种访问。问题是 SQLiteDataReader的SELECT查询的ExecuteReader适用于WinForms和Console Test-apps,但在Windows服务中使用时为null。 Service和Test-app都使用相同的lib。没有抛出异常。请看下面的示例代码:
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);
}
答案 0 :(得分:0)
问题在于我写的TOIQDevice扩展方法,在SQLiteParameter中有一个小错误,一旦修复了规定的问题就消失了,现在我可以通过ExecuteReader看到数据了。