代码如下
private void button8_Click(object sender, EventArgs e)
{
SqlConnection cn = new SqlConnection("Data Source=SERVER05;Initial Catalog=ICCO;Persist Security Info=True;User ID=sa;Pwd=2008");
cn.Open();
SqlTransaction trans = cn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
string sql = "INSERT INTO X_foster(foster_name,foster_date,foster_post,foster_stipend,foster_content,foster_circs,foster_result,foster_labour,degree,factory,community,exuberance ) VALUES(@name,@date,@post,@stipend,@content,@circs,@result,@labour,@pic1,@pic2,@pic3,@pic4)";
SqlCommand cmd = new SqlCommand(sql, cn);
//cn.Open();
cmd.Parameters.Add("@name", SqlDbType.Char).Value = TextName.Text.Trim();//姓名foster_name
cmd.Parameters.Add("@date", SqlDbType.DateTime).Value = dateTimePicker1.Text.Trim();//日期foster_date
cmd.Parameters.Add("@post", SqlDbType.Char).Value = TextGW.Text.Trim();//岗位foster_post
cmd.Parameters.Add("@labour", SqlDbType.Char).Value = textID.Text.Trim();//工号foster_labour
cmd.Parameters.Add("@stipend", SqlDbType.Char).Value = TextXZ.Text.Trim();//薪资foster_stipend
cmd.Parameters.Add("@content", SqlDbType.Char).Value = TextNR.Text.Trim();//内容foster_content
cmd.Parameters.Add("@circs", SqlDbType.Char).Value = TextQK.Text.Trim();//情况foster_circs
cmd.Parameters.Add("@result", SqlDbType.Char).Value = TextJG.Text.Trim();//结果foster_result MemoryStream ms1 = new MemoryStream();
byte[] degree;
this.pictureBox1.Image.Save(ms1, System.Drawing.Imaging.ImageFormat.Bmp);
degree = new byte[ms1.Length];
ms1.Position = 0;
ms1.Read(degree, 0, Convert.ToInt32(ms1.Length)); MemoryStream ms2 = new MemoryStream();
byte[] factory;
this.pictureBox2.Image.Save(ms2, System.Drawing.Imaging.ImageFormat.Bmp);
factory = new byte[ms2.Length];
ms2.Position = 0;
ms2.Read(factory, 0, Convert.ToInt32(ms2.Length)); MemoryStream ms3 = new MemoryStream();
byte[] community;
this.pictureBox2.Image.Save(ms3, System.Drawing.Imaging.ImageFormat.Bmp);
community = new byte[ms2.Length];
ms3.Position = 0;
ms3.Read(community, 0, Convert.ToInt32(ms2.Length)); MemoryStream ms4 = new MemoryStream();
byte[] exuberance;
this.pictureBox4.Image.Save(ms4, System.Drawing.Imaging.ImageFormat.Bmp);
exuberance = new byte[ms2.Length];
ms4.Position = 0;
ms4.Read(exuberance, 0, Convert.ToInt32(ms4.Length)); cmd.Parameters.Add("@pic1", SqlDbType.Image).Value = degree;
cmd.Parameters.Add("@pic2", SqlDbType.Image).Value = factory;
cmd.Parameters.Add("@pic2", SqlDbType.Image).Value = community;
cmd.Parameters.Add("@pic2", SqlDbType.Image).Value = exuberance;
cmd.ExecuteNonQuery(); SqlCommand cmd1 = new SqlCommand("DELETE FROM X_foster WHERE foster_name='" + this.textID.Text + "'", cn);
cmd1.ExecuteNonQuery();
trans.Commit();
}
catch (Exception ex)
{
trans.Rollback();
trans = cn.BeginTransaction();
Console.WriteLine(ex.Message);
MessageBox.Show("更新失败!请确认数据的正确性!", "更新提示!", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
finally
{
cn.Close();
}
}
出现错误显示这个{"如果分配给命令的连接位于本地挂起事务中,ExecuteNonQuery 要求命令拥有事务。命令的 Transaction 属性尚未初始化。"} System.Exception {System.InvalidOperationException}
有没有人教教
private void button8_Click(object sender, EventArgs e)
{
SqlConnection cn = new SqlConnection("Data Source=SERVER05;Initial Catalog=ICCO;Persist Security Info=True;User ID=sa;Pwd=2008");
cn.Open();
SqlTransaction trans = cn.BeginTransaction(IsolationLevel.ReadCommitted);
try
{
string sql = "INSERT INTO X_foster(foster_name,foster_date,foster_post,foster_stipend,foster_content,foster_circs,foster_result,foster_labour,degree,factory,community,exuberance ) VALUES(@name,@date,@post,@stipend,@content,@circs,@result,@labour,@pic1,@pic2,@pic3,@pic4)";
SqlCommand cmd = new SqlCommand(sql, cn);
//cn.Open();
cmd.Parameters.Add("@name", SqlDbType.Char).Value = TextName.Text.Trim();//姓名foster_name
cmd.Parameters.Add("@date", SqlDbType.DateTime).Value = dateTimePicker1.Text.Trim();//日期foster_date
cmd.Parameters.Add("@post", SqlDbType.Char).Value = TextGW.Text.Trim();//岗位foster_post
cmd.Parameters.Add("@labour", SqlDbType.Char).Value = textID.Text.Trim();//工号foster_labour
cmd.Parameters.Add("@stipend", SqlDbType.Char).Value = TextXZ.Text.Trim();//薪资foster_stipend
cmd.Parameters.Add("@content", SqlDbType.Char).Value = TextNR.Text.Trim();//内容foster_content
cmd.Parameters.Add("@circs", SqlDbType.Char).Value = TextQK.Text.Trim();//情况foster_circs
cmd.Parameters.Add("@result", SqlDbType.Char).Value = TextJG.Text.Trim();//结果foster_result MemoryStream ms1 = new MemoryStream();
byte[] degree;
this.pictureBox1.Image.Save(ms1, System.Drawing.Imaging.ImageFormat.Bmp);
degree = new byte[ms1.Length];
ms1.Position = 0;
ms1.Read(degree, 0, Convert.ToInt32(ms1.Length)); MemoryStream ms2 = new MemoryStream();
byte[] factory;
this.pictureBox2.Image.Save(ms2, System.Drawing.Imaging.ImageFormat.Bmp);
factory = new byte[ms2.Length];
ms2.Position = 0;
ms2.Read(factory, 0, Convert.ToInt32(ms2.Length)); MemoryStream ms3 = new MemoryStream();
byte[] community;
this.pictureBox2.Image.Save(ms3, System.Drawing.Imaging.ImageFormat.Bmp);
community = new byte[ms2.Length];
ms3.Position = 0;
ms3.Read(community, 0, Convert.ToInt32(ms2.Length)); MemoryStream ms4 = new MemoryStream();
byte[] exuberance;
this.pictureBox4.Image.Save(ms4, System.Drawing.Imaging.ImageFormat.Bmp);
exuberance = new byte[ms2.Length];
ms4.Position = 0;
ms4.Read(exuberance, 0, Convert.ToInt32(ms4.Length)); cmd.Parameters.Add("@pic1", SqlDbType.Image).Value = degree;
cmd.Parameters.Add("@pic2", SqlDbType.Image).Value = factory;
cmd.Parameters.Add("@pic2", SqlDbType.Image).Value = community;
cmd.Parameters.Add("@pic2", SqlDbType.Image).Value = exuberance;
cmd.ExecuteNonQuery(); SqlCommand cmd1 = new SqlCommand("DELETE FROM X_foster WHERE foster_name='" + this.textID.Text + "'", cn);
cmd1.ExecuteNonQuery();
trans.Commit();
}
catch (Exception ex)
{
trans.Rollback();
trans = cn.BeginTransaction();
Console.WriteLine(ex.Message);
MessageBox.Show("更新失败!请确认数据的正确性!", "更新提示!", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
finally
{
cn.Close();
}
}
出现错误显示这个{"如果分配给命令的连接位于本地挂起事务中,ExecuteNonQuery 要求命令拥有事务。命令的 Transaction 属性尚未初始化。"} System.Exception {System.InvalidOperationException}
有没有人教教
using (SqlConnection conn = new SqlConnection("server=(local);database=TallyMoney;user id=sa;password=sa;"))
{
conn.Open();//连接数据库
SqlTransaction transaction;//开始一个本地事务
transaction = conn.BeginTransaction("MyTransaction");//必须为SqlCommand指定数据库连接和登记的事务
//或transaction = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand("", conn, transaction);
try
{//向数据表中插入记录的命令语句
cmd.CommandText = @"insert into aa (datestr,reinfo) values ('"+TextBox1.Text+"','"+TextBox2.Text+"')";
cmd.ExecuteNonQuery();
cmd.CommandText = @"insert into bb (aa_id,name) values ('"+TextBox3.Text+"','"+TextBox4.Text+"')";
cmd.ExecuteNonQuery();
transaction.Commit();//提交事务
Response.Write("操作完成");
}
catch (Exception ex)
{
Response.Write("提交错误类型:"+ex.GetType());
Response.Write("提交错误信息:"+ex.Message);
try
{
transaction.Rollback();//回滚事务
}
catch (Exception ex2)
{
Response.Write("回滚错误类型:"+ex2.GetType());
Response.Write("回滚错误信息:"+ex2.Message);
}
}
}
没有为Cmd设置事务对象
cmd.Transaction = trans;
SqlCommand cmd = new SqlCommand(sql, cn);
改正一下
SqlCommand cmd = new SqlCommand(sql, cn ,transaction);其它修改同上