在c#prepared statement中执行多个SQL查询

时间:2017-04-13 15:25:06

标签: c# mysql prepared-statement

我想知道是否可以在一个预准备语句中执行多个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'查询。 什么是最有效的方法呢?

1 个答案:

答案 0 :(得分:1)

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

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

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