c#高手帮下我 。看下错!

来源:百度知道 编辑:UC知道 时间:2024/06/04 12:34:03
其中sqlInsert 与sqlInsert1都是insert into sql语句,都没有问题,
问题1: order[0]可以正常返回值
order[1] 却不能返回值,也不报错
问题2:在 catch里 Rollback();时。什么已经完成,不能再使用了
qlConnection conn = null;
SqlTransaction tran = null;
int[] order = new int[2];
try
{
using (conn = new SqlConnection(SqlHelper_SQL.ConnectionString_custom))
{
conn.Open();
tran = conn.BeginTransaction(IsolationLevel.Serializable);
SqlCommand cmd = new SqlCommand(sqlInsert, conn, tran);
order[0] = Convert.ToInt32(cmd.ExecuteScalar());
cmd.CommandText = sqlInsert1;
order[1] = Convert.ToInt32(cmd.ExecuteScalar());
cmd.Dispose();
tran.Commit();
}
}
执行sqlInsert1返回:(1 行受影响)

sqlInsert1,你把这个SQL语句直接在sqlserver里面运行一下,看下结果是什么

(1 行受影响),他只是显示受影响行数,也就是看你是否运行成功,并没有具体的值,如果你想在C#中看是否运行成功,你应该用int result = cmd.ExecuteNonQuery();result值为1的话则运行成功

ExecuteScalar 方法返回单一值,故order[0]
order[1]是个空值,故不显示和报错

000000

试试换个(新建个cmd2)command执行!