這段代碼有效!!!
資料庫路徑錯誤。因此,當我執行時:
dbConnection.Open();
我沒有打開我的資料庫,而是創建了一個空資料庫。
謝謝大家的幫助!
問題
我正在使用 C#.NET 5.0 和 System.Data.Sqlite 創建一個在 Windows 上運行的控制臺應用程式。
我正在嘗試檢查資料庫中是否存在名為“parcelas”的表為此我正在使用此查詢:
SELECT name FROM sqlite_master WHERE type='table' AND name='parcelas'
此查詢在 DB 瀏覽器上運行沒有問題。但是當我在我的 C# 程式上運行它時,查詢回傳“null”而沒有任何例外(當然我在嘗試讀取 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;
}
uj5u.com熱心網友回復:
ExecuteScalarnull當查詢回傳零行時回傳;它DBNull.Value在至少回傳一行并且第一列中的值是一個資料庫時回傳null。
所以:您的查詢沒有回傳行。檢查這是否是預期的,如果不是:修復它。我想,但是,有很多更關心的SQL注入漏洞AND name='" tableName "'";; 引數應該始終是首選。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/311425.html
