我目前正在嘗試用 C# 制作圖書管理員。我正在使用.ACCDB數(shù)據(jù)庫來存儲有關書籍的數(shù)據(jù)。首先,我檢索bookIDs屬于特定系列的:sql.CommandText = "select * from BookTable where SeriesID = " +
DataClass.SeriesTableIndex;它檢索BookIDs 20and 23。這些是正確BookIDs對應SeriesID于數(shù)據(jù)庫中的。在此之后,我的代碼構建下一個 sql 命令。我省略了命令的功能構建。它構建以下代碼:string sqlcommand = "select * from BookTable where BookID = 23 or 20"我使用這個命令來獲取書名:sql.CommandText = sqlcommand;它應該只返回bookWithID23,bookWithID20但它也返回bookWithID21。我的測試數(shù)據(jù)庫中只有 3 本書,但它以某種方式返回所有 3 本書而不是系列中的 2 本書。我對 SQL 一無所知,所以這可能是一個簡單的語法錯誤。
1 回答

天涯盡頭無女友
TA貢獻1831條經驗 獲得超9個贊
的正確語法or
是(https://www.w3schools.com/sql/sql_and_or.asp):
"BookID = 23 or BookID = 20"
此外,您應該始終使用參數(shù)化查詢來避免SQL Injection,如下所示:
sql.CommandText = "select * from BookTable where SeriesID = @SeriesID"; sql.Parameters.AddWithValue("@SeriesID", DataClass.SeriesTableIndex);
雖然直接指定類型并使用Value
屬性比AddWithValue
:
sql.Parameters.Add("@SeriesID", SqlDbType.Int).Value = DataClass.SeriesTableIndex;
我們可以停止使用 AddWithValue() 了嗎?
- 1 回答
- 0 關注
- 164 瀏覽
添加回答
舉報
0/150
提交
取消