【问题标题】:How to restrict to execute a single sql query using OleDbCommand如何使用 OleDbCommand 限制执行单​​个 sql 查询
【发布时间】:2018-02-12 20:06:30
【问题描述】:

我尝试在单个查询中提供多个插入或更新,例如

OleDbCommand command = new OleDbCommand("INSERT INTO Employee (Id, 姓名,地址,工资)值(2001,'name1','address1', 100000);UPDATE Employee SET Salary = 2000000 WHERE Id = 2001;");

这会成功执行。

但我不希望一次执行多个 sql 查询。在 C# 中是否有任何属性或类似的东西可以用来限制只有一个查询。

我想将其限制为单个执行中的单个 sql 查询。

谢谢。

【问题讨论】:

  • 为什么重要?如果你写了所有的 SQL,你就知道发生了什么。
  • 您不能在单个查询中分别更新多条记录,您必须为每条记录进行更新查询。但是,您可以将所有查询放在一个事务中。
  • 我想在单次执行中执行一个查询。这是我的要求。
  • 你的问题我不清楚。如果你想把它限制为一个查询,那么为什么不给你的命令一个查询呢?
  • 不,没有。如果您不想要多语句批处理,请不要提交它们。限制自己提交的内容的形式。您的问题听起来像您有一些非常讨厌的 SQL 注入等待发生,因为您缺乏检查。

标签: c# sqlcommand oledbcommand executenonquery isqlquery


【解决方案1】:

试试这样的

创建一个值的字符串构建器

StringBuilder sb = new StringBuilder();
string sep = "";
for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
{
sb.AppendFormat("value1","value2" etc);
 }  
string insertthis = sb.ToString();

然后插入到sql中

using (OleDbCommand cmd = new OleDbCommand("INSERT INTO Employee (ItemName) VALUES (@ins)", con))
  {
  cmd.Parameters.AddWithValue("@ins", insertthis );
  cmd.ExecuteNonQuery();
  }
MessageBox.Show("Data added");

更新也像插入一样工作

Ref

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-05
    • 2012-03-09
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 2022-01-19
    • 2021-02-15
    • 1970-01-01
    相关资源
    最近更新 更多