繁体   English   中英

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

[英]How do I use prepared statements with an 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM