c# - 如何将准备好的语句与 OleDbDataAdapter 一起使用?
问题描述
我正在编写一个 API,它将在给定特定参数的情况下查询数据库。其中一些参数将由调用应用程序提供(应该是值得信赖的),但其中一些参数将由用户输入提供。
如果我得到少量结果,我通常会使用 OleDbCommand 并通过Parameters
字段使用准备好的语句,如此处所示
string sql = "Select * from [Table1] where Empid = ?";
OleDbCommand cmd = new OleDbCommand(sql, conn);
OleDbParameter tableParam = new OleDbParameter("@fieldvalue", value);
cmd.Parameters.Add(tableParam);
cmd.Prepare();
但是,由于我可能会得到很多结果(可能是表的全部内容),我想使用 OleDbDataAdapter 来填充 DataTable 以更方便地处理和返回数据:
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter(sql, connstring);
da.Fill(dt);
问题是我不知道如何将准备好的语句与 OleDbDataAdapter 一起使用。我该怎么做,或者在使用 OleDbDataAdapter 时有其他方法来保证数据库安全吗?
解决方案
OleDbDataAdapter使用您的查询文本公开由适配器构建的SelectCommand属性(一个 OleDbCommand)。您可以使用它来“准备” OleDbDataAdapter 使用的命令,提供命令文本所需的参数。
DataTable dt = new DataTable();
OleDbDataAdapter da = new OleDbDataAdapter(sql, connstring);
da.SelectCommand.Parameters.Add("@fieldvalue", OleDbType.Integer).Value = value;
da.Fill(dt);
推荐阅读
- mongodb - How can i apply join into array of object inside array in MongoDB?
- amazon-web-services - AWS MediaPackage 作为 CDN (CloudFront) 的来源
- python - 关于python中使用返回值的问题
- three.js - 将动画同步到时钟增量以进行录制
- sql - SQL如何从一个列表中连接相同的值然后求和
- unity3d - 如何在 Unity 中通过脚本更改文本
- android - 在小屏幕上看不到按钮之间的空间
- javascript - Detox 无法在 React Native Android 上的发布版本上运行
- android - 添加按钮时,我的 Xamarin 应用程序崩溃
- visual-studio - Xamarin 开发 - Resource.Id 问题,Resource.Id 不包含项目