SqliteCommand.ExecuteScalar() returns 空(C# 5.0 和 System.Data.Sqlite)

SqliteCommand.ExecuteScalar() returns null (C# 5.0 and System.Data.Sqlite)

此代码有效!!!

数据库路径错误。因此,当我执行时:

dbConnection.Open();

我没有打开我的数据库,而是创建了一个空数据库。

谢谢大家的帮助!


问题

我正在使用 C#.NET 5.0 和 System.Data.Sqlite 创建一个 运行 在 windows 上运行的控制台应用程序。

我正在尝试检查数据库中是否存在名为“parcelas”的 table 为此,我正在使用此查询:

SELECT name FROM sqlite_master WHERE type='table' AND name='parcelas'

此查询 运行 在 DB 浏览器上没有问题。但是当我 运行 它在我的 C# 程序上时,查询 returns "null" 没有任何例外(当然我有一个 "System.NullReferenceException" 试图读取空结果)

我尝试转换结果对象并调用 .toString() 但没有成功。

我是不是做错了什么?

代码如下:

public void TableExist(string tableName)
    {
        if (tableName == null || db == null || db.State != System.Data.ConnectionState.Open)
        {
            Console.WriteLine("ERROR!!!");
            return;
        }

        SQLiteCommand cmd = new SQLiteCommand(db);
        cmd.CommandText = "SELECT name FROM sqlite_master WHERE type='table' AND name='"+ tableName +"'";
        var result = cmd.ExecuteScalar();
        Console.WriteLine("RESULT: " + result.ToString());
        return;

    }

ExecuteScalar returns null 当查询返回零行时;它 returns DBNull.Value 当至少返回一行并且第一列中的值是数据库 null.

所以:您的查询没有返回行。检查这是否是预期的,如果不是:修复它。但是,我 更关心 AND name='"+ tableName +"'"; 中的 SQL 注入漏洞;参数应始终是首选。