SQLite ExecuteReader 在控制台和窗体应用程序工作,但不能从 Windows 服务工作

本文关键字:但不能 Windows 服务工作 工作 应用程序 ExecuteReader 控制台 窗体 SQLite | 更新日期: 2023-09-27 18:31:22

我有一个SQLite数据访问提供程序库,它只是通过单例类提供对SQLite数据库(.db)的非SQL编程访问。这个库实际上使用 SQLiteCommand 来实现这种访问。问题是SQLiteDataReader的ExecuteReader用于SELECT查询,可以很好地与WinForms和Console Test-apps一起使用,但在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);
}

SQLite ExecuteReader 在控制台和窗体应用程序工作,但不能从 Windows 服务工作

问题出在我编写的 TOIQDevice 扩展方法上,它曾经在 SQLiteParameter 中有一个小错误,一旦修复,所述问题就消失了,现在我可以通过 ExecuteReader 查看数据。

相关文章: