/*
author:wuxiuxiang;
Email:imessage@126.com
*/
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(); } };}