/*
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();
}
};
}