using System; using System.Data; namespace com.cuc.wu.example { public class class1 { //For SQL Server 需要与Connection相关的一个Transaction的隔离级别为 //Repeatable Read或Serializable,对于Oracle,在Command中使用select for update即可 public void LockedSQLDataRow() { DataSet ds = new DataSet(); SqlConnection sconn = new SqlConnection("server=localhost;uid=sa;pwd=sa;database=pubs"); sconn.Open(); SqlTransaction tx = new sconn.BeginTransaction(IsolationLevel.Serializable);
SqlCommand cmd = new SqlCommand("select * from authors",conn,tx); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(ds,"autors"); //rows locked here
ds.Tables[0].Rows[1][2]="Free";
SqlCommandBuilder bld = new SqlCommandBuilder(da); da.Update(ds,"authors"); tx.commit(); //rows unlocked here da.Dispose(); conn.Close();//ÏÔʽÊÍ·Å×ÊÔ´ } public void LockedORADataRow() { DataSet ds = new DataSet(); OleDbConnection oconn = new OleDbConnection("provider=msdaora;data source=ocr11;user id=scott;password=tiger"); conn.Open();
OleDbTransaction tx = oconn.BeginTransaction(); OleDbCommand cmd = new OleDbCommand("select * form emp for update ",conn,tx);
OleDbDataAdapter da = new OleDbDataAdapter(cmd); da.Fill(ds,"emp");