0

我有一个 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);
}
4

1 回答 1

0

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

于 2013-10-09T08:31:01.857 回答