c# - 如何在C#中一次性执行两个查询?

标签 c# mysql

我在 C# 中执行两个查询时遇到问题。当我尝试执行第二个时,它会给出以下消息:

Column 'FIRST_NAME' cannot be null

...这是指我之前成功执行的第一个查询。我认为第二个查询中仍然包含此列名称,即使我在这里没有使用它。

如您所见,我创建了一个新的 StringBuilder 对象并清除了第二个查询的参数,但不知何故我仍然收到此消息。

        // Executed first query. Now moving onto second query without calling .Close()

        // Store the last inserted id as the child's local id
        child.ID = cmd.LastInsertedId;

        // Store the child id into the parent record
        query = new StringBuilder();
        cmd.Parameters.Clear(); 

        query.Append("UPDATE players SET child_id = @child_id WHERE player_id = @player_id;");

        cmd.Parameters.AddWithValue("child_id", child.ID);
        cmd.Parameters.AddWithValue("player_id", child.ParentID);

        // Execute query
        rows_affected = cmd.ExecuteNonQuery();

        conn.Close();

最佳答案

您似乎没有为新查询设置 CommandText 属性。您仍在使用第二个查询的参数执行第一个查询。

    // Executed first query. Now moving onto second query without calling .Close()

    // Store the last inserted id as the child's local id
    child.ID = cmd.LastInsertedId;

    // Store the child id into the parent record
    query = new StringBuilder();
    cmd.Parameters.Clear(); 

    query.Append("UPDATE players SET child_id = @child_id WHERE player_id = @player_id;");

    //*** ADD THIS LINE HERE ***//
    cmd.CommandText = query.ToString();

    cmd.Parameters.AddWithValue("child_id", child.ID);
    cmd.Parameters.AddWithValue("player_id", child.ParentID);

    // Execute query
    rows_affected = cmd.ExecuteNonQuery();

    conn.Close();

关于c# - 如何在C#中一次性执行两个查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45497608/

相关文章:

mysql - 如何创建触发器(Mysql)

python - 使用 mysql-python 执行不同的查询

c# - 可以卸载的已安装程序/更新列表

c# - Xamarin 表格 : Embed symbols in text

c# - 将 UI 和 API 组合到单个 Blazor 服务器应用程序中?

c# - XML 命名空间 clr-命名空间 :XXX 中不存在标记 'ViewModelLocator'

apache - 从命令行提取 mysql 数据库

php - 如何使用 Doctrine 和 Symfony2 调试失败的数据库写入?

python - 如何使用 Mysql Python 连接器检索二进制数据?

c# - 从 iframe 中读取查询字符串参数