悲观观定SQL Server和Oracle

王朝c#·作者佚名  2006-12-17
宽屏版  字体: |||超大  

悲观观定SQL Server和Oracle

悲观观定SQL Server和Oracle /*

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();

}

};

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有