/*
author:wuxiuxiang;
Email:[email protected]
*/
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 " );
// rows locked here;
ds.Tables[ 0 ].Rows[ 9 ][ 2 ] = " CLERK " ;
OleDbCommandBuilder bld = new OleDbCommandBuilder(da);
da.Update(ds, " emp " );
tx.Commit();
// rows unlocked here
da.Dispose();
oconn.Close();
}
} ;
}