0

我刚刚在 SQLite.NET 库中发现了一个错误。我有一个函数,它返回一个包含 Select 命令内容的字符串数组。代码如下:

string selectSQL = "SELECT id, token FROM Files WHERE (name LIKE 'Client.rar') AND (folder_id IN (SELECT id FROM Directories WHERE Path || name || '\' LIKE 'C:\Documents and Settings\Django\'))";
SQLiteCommand selectCommand = new SQLiteCommand(selectSQL, sqliteCon);
SQLiteDataReader dataReader = selectCommand.ExecuteReader();

bool results = dataReader.Read();
if (results == true)
{
    List<string> list = new List<string>();
    for (int i = 0; i < dataReader.FieldCount; i++)
    {
        string field = dataReader[i].ToString();
        list.Add(field);
    }
    string[] arr = list.ToArray();

    dataReader.Close();
    sqliteCon.Close();
    return arr;
}
else
{
    string[] arr = { "" };
    return arr;
}

使用 SQLite 数据浏览器程序查看数据库。事实是,以前的软件中的查询有效,而在我的 C# 应用程序中返回一个空结果。

有谁知道那在哪里?似乎一切都是正确的

问候!

4

1 回答 1

1

我将继续并将其作为答案:

尝试将第一行更改为:

string selectSQL = @"SELECT id, token FROM Files WHERE (name LIKE 'Client.rar') AND (folder_id IN (SELECT id FROM Directories WHERE Path || name || '\' LIKE 'C:\Documents and Settings\Django\'))";

您在字符串中有几个反斜杠,如果您不转义它们,它们将导致问题。您可以选择将所有反斜杠替换为两个反斜杠(\\而不是\),并且不要将 @ 放在字符串前面。

于 2013-02-15T18:17:11.753 回答