悲观观定SQL Server和Oracle

王朝oracle·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

/*

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- 王朝網路 版權所有 導航