2012-04-02 10 views
1

SQL Server 2008データベースの複数のテーブルに値を挿入する方法があるかどうかを知りたいだけでしたか?SQL Server 2008データベースの複数のテーブルに値を挿入する方法がある場合は、

私は、次の

cmd.CommandText = "Insert into tb1 (col1, col2, col3) values (@col1, @col2, @col3); Insert into tb2 (col1, col2, col3) values (@col11, @col12, @col13);"; 

    cmd.Parameters.AddWithValue("col1","val1"); 


    cmd.Parameters.AddWithValue("col2", "val2"); 
    cmd.Parameters.AddWithValue("col3", "val3"); 


    cmd.Parameters.AddWithValue("col11","val4"); cmd.Parameters.AddWithValue("col12", "val5"); 
    cmd.Parameters.AddWithValue("col13", "val6"); 

を持っている。しかし値が「TB2に挿入...」場合でも、「TB1」に挿入される部分がエラーを取得しますか? もしそうなら、それは私が望むものではありません。 tb2の部分にエラーがある場合、tb1に値を挿入しないでください。

私を助けてください。

答えて

1

は、トランザクションにあなたのコードをラップする必要があります

using (SqlConnection conn = new SqlConnection(connectionString)) 
    { 
     conn.Open(); 

     // Begin the transaction 
     tran = cnn.BeginTransaction(); 

     cmd = new SqlCommand(); 
     cmd.Connection = conn; 
     cmd.Transaction = tran; 

     try 
     { 
      //place your current code here with multiple cmd.ExecuteNonQuery 

      // Commit the transaction .... 
      tran.Commit(); 
     } 
     catch(Exception e) 
     { 
      tran.Rollback(); 
     } 
} 
+0

をロットBluesRockAddict –

0

使用取引

using (SqlConnection sqlConn = new SqlConnection(ConnectionString)) 
{ 
    sqlConn.Open(); 

    using (SqlTransaction sqlTrans = sqlConn.BeginTransaction()) 
    { 
     // ... insert 1 
     // ... insert 2 

     sqlTrans.Commit(); 
    } 
} 
+0

は、それが内蔵されたトランザクションでMembership.CreateUser()関数を呼び出すことが可能であるおかげでasp.netで? –

+0

わかりません。あなたがそれを扱うトランザクションを与えることができるかどうかを見るためにプロパティを見てください。私はこれについて新しい質問を開くことをお勧めします。 –

+0

助けてくれてありがとう。 –

関連する問題