c# - 如何将准备好的语句与 OleDbDataAdapter 一起使用?

标签 c# sql asp.net prepared-statement 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);

关于c# - 如何将准备好的语句与 OleDbDataAdapter 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64146385/

相关文章:

c# - 即使用户更改手机时钟,也可以准确计算 Windows Phone 7 上两个 DateTimes 的差异吗?

c# 如何在函数中使用实例化的对象属性(这是一个列表)?

c# - 在用 C# 加密的 SQL Anywhere 16 中解密 AES,反之亦然

asp.net - 如何衡量 ASP.NET MVC ActionLink 的成功?

c# - 安装自定义 StyleCop 规则

c# - 获取数据集 ds.Tables[0].Rows.Count=0

sql - 更优雅的批量验证电话号码的方法

java - 以下查询导致 MySQLSyntaxErrorException - 我的查询有什么问题?

c# - 模拟和 NetworkCredential

c# - 必须定义参数 '@email'