请大侠帮我瞧瞧(为什么不能同时插入!)
我想用事务向三张不同的表中插入数据,而且有两张表中插入的为新加入的课程表中的id值,请问如何写才对?
private void Button1_Click(object sender, System.EventArgs e)
{
string zhuanye=this.zhuanye.SelectedItem.Value;
string kecheng=this.kecheng.Text.Trim();
string Sql2="select 课程名称,专业名称 from 课程 where 课程名称='"+kecheng+"' and 专业名称='"+zhuanye+"'";
System.Data.SqlClient.SqlDataAdapter Myad=new System.Data.SqlClient.SqlDataAdapter(Sql2,Mycon);
System.Data.DataSet Myds=new DataSet();
Myad.Fill(Myds);
string maxid1=("select max(id) from 课程")+1;
string nodeid1=("select max(nodeid) from 课程结构")+1;
string nodeid2=("select max(nodeid) from 章节内容")+1;
if (Myds.Tables[0].Rows.Count!=1)
{
//启动一个事务
SqlTransaction myTrans = Mycon.BeginTransaction();
SqlCommand myCommand = new SqlCommand();
myCommand.Connection=Mycon;
myCommand.Transaction=myTrans;
try
{
myCommand.CommandText="insert into 课程 (专业名称,课程名称) values (@专业名称,@课程名称)";
myCommand.Parameters.Add(new SqlParameter("@专业名称",System.Data.SqlDbType.Char,100));
myCommand.Parameters["@专业名称"].Value=zhuanye;
myCommand.Parameters.Add(new SqlParameter("@课程名称",System.Data.SqlDbType.Char,100));
myCommand.Parameters["@课程名称"].Value=kecheng;
myCommand.ExecuteNonQuery();
myCommand.CommandText="insert into 课程结构 (nodeid,sub_id) values (nodeid1,maxid1)";
myCommand.ExecuteNonQuery();
myCommand.CommandText="insert into 章节内容 (nodeid2) values (nodeid)";
myCommand.ExecuteNonQuery();
myTrans.Commit();
}
catch
{
myTrans.Rollback();
}
finally
{
Mycon.Close();
}
}
else
{
Response.Write("<script language='javascript'>alert('注意!此专业下已经添加了该课程!');</script>");
}
}