读书人

C# and ms sql存储过程问有关问题

发布时间: 2011-12-19 23:23:36 作者: rapoo

C# and ms sql存储过程问问题
//string StfId = Request.QueryString.GetValues( "StfId ").GetValue(0).ToString();
//string QbNumber = Request.QueryString.GetValues( "QbNumber ").GetValue(0).ToString();
//string Money = Request.QueryString.GetValues( "Money ").GetValue(0).ToString();
//以上为取值,现在测试直接用
string StfId = "12 ";
string QbNumber = "2222222 ";
string Money = "5 ";

SqlConnection Conn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings.Get( "DataConnectionString "));
Conn.Open();


SqlCommand CmdUpdate = new SqlCommand( "Pro_QbType ", Conn);
CmdUpdate.CommandType = CommandType.StoredProcedure;
CmdUpdate.Parameters.Add( "@StfId ", SqlDbType.VarChar,4).Value = StfId;
CmdUpdate.Parameters.Add( "@QBValues ",SqlDbType.VarChar,4).Value = Money;


//建立并添加和“@QBcode OUTPUT”对应的参数
SqlParameter parmReturnValue = new SqlParameter( "@QBcode ", SqlDbType.VarChar,20);
//parmReturnValue.IsNullable = true;
parmReturnValue.Direction = ParameterDirection.Output;
CmdUpdate.Parameters.Add(parmReturnValue);

CmdUpdate.ExecuteNonQuery();
QBcode = CmdUpdate.Parameters[ "@QBcode "].Value.ToString();

SqlTransaction Trans = Conn.BeginTransaction();
try
{
CmdUpdate.Transaction = Trans;
CmdUpdate.ExecuteNonQuery();
QBcode =CmdUpdate.Parameters[ "@QBcode "].Value.ToString();
Trans.Commit();
CmdUpdate.Dispose();
Conn.Close();
}
catch (Exception Err)


{

Response.Write(Err.Message);

}
说明:
在MS SQL2005中执行有返回值,在程序中测试就是为空?

[解决办法]
QBcode =CmdUpdate.Parameters[ "@QBcode "].Value.ToString();
Trans.Commit();
这两句的顺序换一下,先提交事务,再取数据
[解决办法]
一定是顺序有问题

读书人网 >C#

热点推荐