Shi*_*Dev -1 .net c# sql ms-access
我目前正在尝试在 C# 中创建一个图书管理器。我正在使用.ACCDB数据库来存储有关书籍的数据。
首先,我检索bookIDs属于特定系列的 :
sql.CommandText = "select * from BookTable where SeriesID = " +
DataClass.SeriesTableIndex;
它检索BookIDs 20和23。这些是正确BookIDs对应SeriesID于数据库中的。
在此之后,我的代码构建下一个 sql 命令。我省略了命令的功能构建。它构建以下代码:
string sqlcommand = "select * from BookTable where BookID = 23 or 20"
我使用这个命令来获取书名:
sql.CommandText = sqlcommand;
它应该只返回bookWithID23,bookWithID20但它也返回bookWithID21。我的测试数据库中只有 3 本书,但它以某种方式返回了所有 3 本书,而不是系列中的 2 本书。
我对 SQL 一无所知,所以这可能是一个简单的语法错误。
的正确语法or是(https://www.w3schools.com/sql/sql_and_or.asp):
"BookID = 23 or BookID = 20"
此外,您应该始终使用参数化查询来避免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;
| 归档时间: | 
 | 
| 查看次数: | 67 次 | 
| 最近记录: |