悲观观定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();
}
};
}
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。