我在 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/