ADO.NETでトランザクションを使用してデータベースの読み書きを行う方法
6006 ワード
トランザクションを使用するのは一般的にデータの書き込みであり、データの読み取りには一般的にこの品物は必要ありません.
1つ目の方法:
ストアド・プロシージャの使用:
名前の通り、格納中に変数を定義し、トランザクションの開始、終了、エラーロールバック、ADOを定義します.NETでストレージ・プロシージャを正常に呼び出す方法でよい
トランザクションはストレージ中
第2の方式:ADOを採用する.NETが持つトランザクションの扱い方(トランザクションをサポートしていないデータベースに対処できますよ)
最後に、これがトランザクションを使用する2つの方法です.大量のデータ书き込みを行う场合は、事务に适していますよ.具体的な原理~SQLの本をめくりましょう.
1つ目の方法:
ストアド・プロシージャの使用:
名前の通り、格納中に変数を定義し、トランザクションの開始、終了、エラーロールバック、ADOを定義します.NETでストレージ・プロシージャを正常に呼び出す方法でよい
/// <summary>
///
/// </summary>
/// <param name="conn"> </param>
/// <param name="id"> </param>
private void TransactionDB(SqlConnection conn, int id)
{
SqlCommand cmd = new SqlCommand("spAddOrderxxxx", conn);//
cmd.CommandType = CommandType.StoredProcedure;//
cmd.Parameters.Add("@CustomerID", SqlDbType.Int).Value = id;//
try
{
conn.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Trace.Write(ex.Message);
}
finally
{
if (conn.State != ConnectionState.Closed)
{
conn.Close();
}
}
}
トランザクションはストレージ中
CREATE PROcedure [spAddxxxx]
@CustomerID int
AS
Begin Transaction
..........
commit transaction
return
ErroHandler:
rollback transaction
return
第2の方式:ADOを採用する.NETが持つトランザクションの扱い方(トランザクションをサポートしていないデータベースに対処できますよ)
private void Transaction(SqlConnection conn)
{
SqlCommand cmd = new SqlCommand("xxxxx", conn);//xxxxx SQL
SqlTransaction transaction = null;
try
{
conn.Open();
transaction = conn.BeginTransaction();
cmd.Transaction = transaction;//
cmd.ExecuteNonQuery();
cmd.CommandText = "xxxxxxxxxxyyyyy";// !
cmd.ExecuteNonQuery();
transaction.Commit();//OK,
}
catch (Exception ex)
{
transaction.Rollback();//
}
finally
{
if (conn.State != ConnectionState.Closed)
{
conn.Close();
}
}
}
最後に、これがトランザクションを使用する2つの方法です.大量のデータ书き込みを行う场合は、事务に适していますよ.具体的な原理~SQLの本をめくりましょう.