2017-08-04 8 views
0

C#で2つのクエリを実行する際に問題があります。私は2番目を実行しようとすると、それは私に次のメッセージ得られますC#で一度に2つのクエリを実行するにはどうすればよいですか?

列「FIRST_NAME」を以前に正常に実行された私の最初のクエリを参照している...

nullにすることはできません。私はここでそれを使用していないにもかかわらず、2番目のクエリがまだこの列名を持っていると思っています。

ご覧のとおり、新しいStringBuilderオブジェクトを作成し、2番目のクエリのパラメータをクリアしましたが、何とかこのメッセージが表示されます。

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

最初のクエリがエラーをスローしているようです。最初のクエリは正常に実行されましたか? –

答えて

1

新しいクエリにCommandTextプロパティを設定していないようです。 2番目のパラメータを使用して最初のクエリを実行しています。

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

関連する問題