急求!sqlserver中关于事物问题

cs2582030451 2012-05-27 08:42:04
先有2张表A,B 我需要先在A中插入一条数据,然后取出刚插入的数据在数据库生产的主键,再将这个主键插入到B表中。
这样的事物要如何进行呢,我疑惑的是如何把从A中取出的主键作为参数插入到B中

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这里如何写呢....
...全文
80 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
op100100 2012-05-27
  • 打赏
  • 举报
回复
假设A1 是自增主键
string sql = "insert into a(a2) values('a');" +
"declare @id int;" +
"select @id=@@IDENTITY;" +
"insert into b(b1,b2,b3) values(@id,'b2','b3');";
cs2582030451 2012-05-27
  • 打赏
  • 举报
回复
怎么在存储过程中将A的主键传递到B表中呢?
cs2582030451 2012-05-27
  • 打赏
  • 举报
回复
也对写个存储过程,魔障了
bdmh 2012-05-27
  • 打赏
  • 举报
回复
你这几条语句是一起被发过去执行的,全部执行完才会返回,所以你应该还不能把id传给B表,你不如写个存储过程吧,或者分步执行sql

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧