2017-04-13 49 views
1

我想知道是否可以在一个预准备语句中执行多个SQL查询。 这是我要执行的第一个查询:在c#语句中执行多个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

MySql支持批处理命令。这意味着第一个命令的文本后,您可以添加一个分号,并在通过的ExecuteNonQuery提交一个字符串第二个命令(不使用的ExecuteReader当你不需要读什么)

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

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

+1

第二个命令只是一个例子,我正在运行的查询是不同的。谢谢你的回答。 – user3586606