110,502
社区成员
发帖
与我相关
我的任务
分享
var tran = conn.BeginTransaction();
//A 返回一个int 的值,怎么样把这个o转成int指,并当作参数放入后面的ExecuteNonQuery中?
o = helper.ExecuteScalar(conn, tran, CommandType.StoredProcedure, "PROCNAME",GetParams(info));
foreach (var item in info.SubItems)
//B
helper.ExecuteNonQuery(conn, tran, CommandType.Text,"INSERT ...",GetParams(item));
//...
tran.Commit();
DECLARE @id int;
BEGIN TRANSACTION
EXEC @id = PROCNAME 'Name',1,1,'2007-02',0.4,'Location','Descriptions'
INSERT INTO SUBTABLE VALUES(@id,'BlockName',22,2,4,'2Units')
INSERT INTO SUBTABLE VALUES(@id,...)
...
COMMIT TRANSACTION
SqlConnection conn = new SqlConnection(DBCore.GetConnectionString());
var cmdDict = new SqlCommand();
var info = GetDictionaryInfo();
cmdDict.Connection = conn;
cmdDict.CommandType = CommandType.StoredProcedure;
cmdDict.CommandText = "REA_REDictionaryAdd";
cmdDict.Parameters.AddRange(GetDictAddParams(info));
cmdDict.Parameters.Add(new SqlParameter("@return",SqlDbType.Int)).Direction = ParameterDirection.ReturnValue;
int id = -1;
conn.Open();
var tran = conn.BeginTransaction();
var cmdBB = new SqlCommand();
cmdBB.Connection = conn;
cmdBB.CommandType = CommandType.Text;
cmdBB.CommandText = ADD_BUILDINGBLOCKS;
cmdDict.Transaction = tran;
cmdBB.Transaction = tran;
cmdDict.ExecuteNonQuery();
//原来这个@return 在tran.Commit()之前已经生效啦.我怎么记得以前到了这里就出错了呢.
id = (int)cmdDict.Parameters["@return"].Value;
foreach (var item in info.BuildingBlocks)
{
cmdBB.Parameters.Clear();
cmdBB.Parameters.AddRange(GenerateBBParams(item, id));
cmdBB.ExecuteNonQuery();
}
tran.Commit();
conn.Close();
cmdDict.Parameters.Clear();
cmdBB.Parameters.Clear();
SqlConnection conn = new SqlConnection(DBCore.GetConnectionString());
SqlTransaction tran = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand();
SqlCommand cmd2 = new SqlCommand();
cmd.Connection = conn;
cmd2.Connection = conn;
cmd.Transaction = tran;
cmd2.Transaction = tran;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "SomethingAdd";
cmd.Parameters.AddRange(GetAddParams());
cmd.Parameters.Add(new SqlParameter("@return", SqlDbType.Int)).Direction = ParameterDirection.ReturnValue;
cmd.ExecuteNonQuery();
cmd2.CommandType = CommandType.Text;
//这里,我要取得 cmd.Parameters["@return"].Value 放入 cmd2的INSERT语句中. How?
cmd2.CommandText = "INSERT INTO SUBTABLE VALUES(?,something a)";
cmd2.ExecuteNonQuery();
cmd2.CommandText = "INSERT INTO SUBTABLE VALUES(?,something b)"
cmd2.ExecuteNonQuery();
...
tran.Commit();