【问题标题】:Execute Multiple SQL queries in c# prepared statement在c#prepared statement中执行多个SQL查询
【发布时间】:2017-04-13 15:25:06
【问题描述】:

我想知道是否可以在一个准备好的语句中执行多个 SQL 查询。 这是我要执行的第一个查询:

MySqlCommand cmd = new MySqlCommand(
                    "INSERT INTO Table VALUES (@Date,@Manager,@Joiner,@Number,@Type,@Join,@Status)",
                    conn);
                    cmd.Prepare();
                    cmd.Parameters.AddWithValue("@Date", Date);
                    cmd.Parameters.AddWithValue("@Manager",Manager);
                    cmd.Parameters.AddWithValue("@Joiner", Joiner);
                    cmd.Parameters.AddWithValue("@Number", Number);
                    cmd.Parameters.AddWithValue("@Type", Type);
                    cmd.Parameters.AddWithValue("@Join", Join);
                    cmd.Parameters.AddWithValue("@Status", Status);
                    cmd.ExecuteReader();

在我需要执行之后 DELETE FROM Table where Date='@Date' 查询。 最有效的方法是什么?

【问题讨论】:

    标签: c# mysql prepared-statement


    【解决方案1】:

    MySql 支持批处理命令。这意味着在第一个命令文本之后,您可以在通过 ExecuteNonQuery 提交的单个字符串中添加分号和第二个命令(不需要阅读任何内容时不要使用 ExecuteReader)

     "INSERT INTO Table VALUES (@Date,@Manager,@Joiner,@Number,@Type,@Join,@Status);
     DELETE FROM Table where Date=@Date"
    

    还请注意,我已经删除了 @Date 参数周围的单引号。离开它们会将参数占位符转换为文字字符串。这几乎找不到任何要删除的行。再想一想,我对第二个命令感到困惑,因为它会删除插入在第一个命令中的相同记录。

    【讨论】:

    • 第二个命令只是一个例子,我运行的查询是不同的。谢谢你的回答。
    猜你喜欢
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    • 2012-02-24
    • 1970-01-01
    相关资源
    最近更新 更多