2017-08-04 90 views
0

我在C#中執行兩個查詢時遇到問題。當我嘗試執行第二,它給了我下面的消息:如何在C#中一次執行兩個查詢?

列「FIRST_NAME」不能爲空

...這是指以前成功執行我的第一個查詢。我想第二個查詢中仍然有這個列名稱,即使我沒有在這裏使用它。你可以看到,我創建了一個新的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(); 
+0

您的第一個查詢似乎引發error.Are確定,您的第一個查詢成功執行? –

回答

1

看起來您並未將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(); 
+0

謝謝,將它分配給cmd.CommandText做了訣竅。 – Phil