c# - 在 C# 准备语句中执行多个 SQL 查询

标签 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' 查询。 最有效的方法是什么?

最佳答案

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

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

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

关于c# - 在 C# 准备语句中执行多个 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43396204/

相关文章:

c# - "x => { throw .. }"的 Lambda 推断匹配重载方法中的 Func<T,Task>?

C# with SharpZipLib - SharpZipLib 与 Winzip 和 XP 的兼容性?

php - 如何使用 html 创建可分页网格

php - 使用 CodeIgniter 事件记录类时限制 SQL 连接

c# - ora-00972 标识符太长 oracle 10g

c# - 如何在我的 View 中将 C# 全局命名空间运算符与 using 指令一起使用?

mysql - Hibernate mysql utf8配置

php - 如何从 MySQLi 准备好的语句中查看呈现的(原始)查询?

php - PHP 中的基本 SQL Select 语句格式化

JavaPreparedStatement删除查询: Show Number of Rows Deleted?