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 注入漏洞;参数应始终是首选。
此代码有效!!!
数据库路径错误。因此,当我执行时:
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 注入漏洞;参数应始终是首选。