可以运行,但却没有实现事务的功能(锁定),请大家帮忙一下~~~那个 cmd.CommandText = 应该错了,请指正,谢哦!!using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Configuration;
using System.Transactions;namespace Picture_Viewer
{
public partial class lockr : Form
{ SqlDataAdapter da;
SqlConnection cn;
DataSet ds;
public lockr()
{
InitializeComponent();
} private void lockr_Load(object sender, EventArgs e)
{
btnup.Enabled = false;
ds = new DataSet();
cn = new SqlConnection();
cn.ConnectionString = "server=192.168.1.104;database=getage;uid=sa;pwd=123";
cn.Open();
da = new SqlDataAdapter("select * from stu", cn);
SqlCommandBuilder sc = new SqlCommandBuilder(da);
da.Fill(ds, "stu"); dataGridView1.DataSource = ds.Tables[0];
dataGridView1.Columns[2].Visible = false;
cn.Close();
} private void btnlock_Click(object sender, EventArgs e)
{
btnup.Enabled = true;
cn = new SqlConnection("server=192.168.1.104;database=getage;uid=sa;pwd=123");//初始化连接
cn.Open();
SqlCommand cmd = cn.CreateCommand();
SqlTransaction sqlTransaction = cn.BeginTransaction(System.Data.IsolationLevel.Serializable); // 开启事务
cmd.Connection = cn;
cmd.Transaction = sqlTransaction; // 将事务应用于Command
try
{
// 利用sqlcommand进行数据操作
cmd.CommandText = "select * from stu with(rowlock) ";
cmd.ExecuteNonQuery();
sqlTransaction.Commit(); // 成功提交
btnup.Enabled = true;
MessageBox.Show("锁定成功!");
}
catch(Exception ex)
{ sqlTransaction.Rollback(); // 出错回滚
btnup.Enabled = false;//继续不可提交;
MessageBox.Show("出错了,大哥!!"); } } private void btnup_Click(object sender, EventArgs e)
{
da.Update(ds,"stu");
MessageBox.Show("上交成功,好样的!!");
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Configuration;
using System.Transactions;namespace Picture_Viewer
{
public partial class lockr : Form
{ SqlDataAdapter da;
SqlConnection cn;
DataSet ds;
public lockr()
{
InitializeComponent();
} private void lockr_Load(object sender, EventArgs e)
{
btnup.Enabled = false;
ds = new DataSet();
cn = new SqlConnection();
cn.ConnectionString = "server=192.168.1.104;database=getage;uid=sa;pwd=123";
cn.Open();
da = new SqlDataAdapter("select * from stu", cn);
SqlCommandBuilder sc = new SqlCommandBuilder(da);
da.Fill(ds, "stu"); dataGridView1.DataSource = ds.Tables[0];
dataGridView1.Columns[2].Visible = false;
cn.Close();
} private void btnlock_Click(object sender, EventArgs e)
{
btnup.Enabled = true;
cn = new SqlConnection("server=192.168.1.104;database=getage;uid=sa;pwd=123");//初始化连接
cn.Open();
SqlCommand cmd = cn.CreateCommand();
SqlTransaction sqlTransaction = cn.BeginTransaction(System.Data.IsolationLevel.Serializable); // 开启事务
cmd.Connection = cn;
cmd.Transaction = sqlTransaction; // 将事务应用于Command
try
{
// 利用sqlcommand进行数据操作
cmd.CommandText = "select * from stu with(rowlock) ";
cmd.ExecuteNonQuery();
sqlTransaction.Commit(); // 成功提交
btnup.Enabled = true;
MessageBox.Show("锁定成功!");
}
catch(Exception ex)
{ sqlTransaction.Rollback(); // 出错回滚
btnup.Enabled = false;//继续不可提交;
MessageBox.Show("出错了,大哥!!"); } } private void btnup_Click(object sender, EventArgs e)
{
da.Update(ds,"stu");
MessageBox.Show("上交成功,好样的!!");
}
}
}
cmd.Transaction = sqlTransaction; // 将事务应用于Command
放在try模块里哈
感觉 没什么问题哈
你试下吧
好像没用到哈
跟你说明一下:在锁定成功时执行了这句代码时sqlTransaction.Commit(); // 成功提交
锁就给释放掉了 所以就达不到锁的目的,下面的代码已经能锁表了。你试试SqlTransaction sqlTransaction = null;
private void btnlock_Click(object sender, EventArgs e)
{
SqlConnection cn = new SqlConnection("server=.;database=ClothingSaleDB;uid=sa;pwd=1");//初始化连接
cn.Open();
SqlCommand cmd = cn.CreateCommand();
sqlTransaction = cn.BeginTransaction(System.Data.IsolationLevel.Serializable); // 开启事务
cmd.Connection = cn;
cmd.Transaction = sqlTransaction; // 将事务应用于Command
try
{
// 利用sqlcommand进行数据操作
cmd.CommandText = "select * from aaa";
cmd.ExecuteNonQuery();
MessageBox.Show("锁定成功!");
//sqlTransaction.Commit(); // 成功提交
}
catch (Exception ex)
{
sqlTransaction.Rollback(); // 出错回滚
//btnup.Enabled = false;//继续不可提交;
MessageBox.Show(ex.Message);
}
} private void button3_Click(object sender, EventArgs e)
{
sqlTransaction.Commit(); // 成功提交
MessageBox.Show("解锁");
}
private void button2_Click(object sender, EventArgs e)
{
//Application.DoEvents();
if (!backgroundWorker1.IsBusy)
backgroundWorker1.RunWorkerAsync();
} private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
SqlConnection cn = new SqlConnection("server=.;database=ClothingSaleDB;uid=sa;pwd=1");//初始化连接
cn.Open();
SqlCommand cmd = cn.CreateCommand();
cmd.CommandText = "insert into aaa values('11')";
cmd.ExecuteNonQuery(); } private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
MessageBox.Show("上交成功,好样的!!");
}