为了账号安全,请及时绑定邮箱和手机立即绑定

使用 SQL 命令从 C# 中的数据库中检索信息

使用 SQL 命令从 C# 中的数据库中检索信息

C#
喵喵时光机 2022-01-09 15:47:02
我目前正在尝试用 C# 制作图书管理员。我正在使用.ACCDB数据库来存储有关书籍的数据。首先,我检索bookIDs属于特定系列的:sql.CommandText = "select * from BookTable where SeriesID = " + DataClass.SeriesTableIndex;它检索BookIDs 20and 23。这些是正确BookIDs对应SeriesID于数据库中的。在此之后,我的代码构建下一个 sql 命令。我省略了命令的功能构建。它构建以下代码:string sqlcommand = "select * from BookTable where BookID = 23 or 20"我使用这个命令来获取书名:sql.CommandText = sqlcommand;它应该只返回bookWithID23,bookWithID20但它也返回bookWithID21。我的测试数据库中只有 3 本书,但它以某种方式返回所有 3 本书而不是系列中的 2 本书。我对 SQL 一无所知,所以这可能是一个简单的语法错误。
查看完整描述

1 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

的正确语法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;

我们可以停止使用 AddWithValue() 了吗?


查看完整回答
反对 回复 2022-01-09
  • 1 回答
  • 0 关注
  • 147 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号