首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

急求!sqlserver中关于事物有关问题

2012-05-28 
急求!sqlserver中关于事物问题先有2张表A,B 我需要先在A中插入一条数据,然后取出刚插入的数据在数据库生产

急求!sqlserver中关于事物问题
先有2张表A,B 我需要先在A中插入一条数据,然后取出刚插入的数据在数据库生产的主键,再将这个主键插入到B表中。
这样的事物要如何进行呢,我疑惑的是如何把从A中取出的主键作为参数插入到B中

C# code
   string sql = @" Insert into A(A1,A2) values(@A1,@A2);                   select @@IDENTITY AS 'Identity';                   Insert into B(B1,B2,B3) values(@B1,@B2,@B3)";            SqlConnection conn = new SqlConnection(CONNECT_STRING);            SqlTransaction tran = null;            SqlCommand cmd = new SqlCommand();            cmd.Connection = conn;            cmd.CommandType = CommandType.Text;            try            {                conn.Open();                tran = conn.BeginTransaction();                cmd.Transaction = tran;                cmd.Parameters.Clear();                cmd.Parameters.AddWithValue("@A1", A1);                ...                cmd.CommandText = sql;                cmd.ExecuteNonQuery();                tran.Commit();                return true;            }            catch (Exception ex)            {                if (tran != null)                {                    tran.Rollback();                }                return false;            }            finally            {                conn.Close();                cmd.Dispose();            }


在cmd.Parameters.AddWithValue这里如何写呢....

[解决办法]
你这几条语句是一起被发过去执行的,全部执行完才会返回,所以你应该还不能把id传给B表,你不如写个存储过程吧,或者分步执行sql
[解决办法]
假设A1 是自增主键
C# code
string sql = "insert into a(a2) values('a');" +                    "declare @id int;" +                    "select @id=@@IDENTITY;" +                    "insert into b(b1,b2,b3) values(@id,'b2','b3');"; 

热点排行