string value = "";
SqlParameter[] parlist = new SqlParameter[4];
parlist[0] = new SqlParameter("@username", user.Name);
parlist[1] = new SqlParameter("@passWord", user.Password);
parlist[2] = new SqlParameter("@Email", user.Email);
SqlParameter sqlpar = new SqlParameter("@value", value);
sqlpar.Direction = ParameterDirection.Output;
parlist[3] = sqlpar;
db.ExecuteNonQuery("pro_CreateUserInfo", parlist);//报错
if (sqlpar.Value != null && sqlpar.Value != DBNull.Value)
value = sqlpar.Value.ToString();
return value;
这个 我执行到上面报错行的时候怎么老是提示将参数值从 SqlParameter 转换到 String 失败。
我 直接使用sql去执行存储过程是没有问题的,谁能帮我解决一下?
我用了用一种方式 解决了
DbCommand cmd = db.GetStoredProcCommand("pro_CreateUserInfo");
db.AddInParameter(cmd, "username", DbType.String, user.Name);
db.AddInParameter(cmd, "passWord", DbType.String, user.Password);
db.AddInParameter(cmd, "Email", DbType.String, user.Email);
db.AddOutParameter(cmd, "value", DbType.String, 50);
db.ExecuteNonQuery(cmd);
string value = db.GetParameterValue(cmd, "value").ToString();
return value;
但是上边的那个问题还是没有找出为什么会出现提示将参数值从 SqlParameter 转换到 String 失败。 等有空再研究吧!
SqlParameter sqlpar = new SqlParameter("@value", value); 加上typeof(string)试验下
SqlParameter sqlpar = new SqlParameter("@value", typeof (string));
sqlpar.Direction = ParameterDirection.Output;
sqlpar.Value = value;
parlist[3] = sqlpar;
还是不行 还是那个错误
参数 赋值可以采用这种方式
也不行 估计是用的using Microsoft.Practices.EnterpriseLibrary.Data;这个dll 的问题
你先不ToString(),看看value是个什么玩意~
是空的
@天空很广阔:是""还是null?你检查下你在存储过程中,有没有对out参数赋值啊!
楼主代码是没问题的,可能是你的存储过程写得不对了
存储过程我直接执行时没有问题的
@天空很广阔: 你这个db是什么?ExecuteNonQuery这个方法可以传参数吗?
@清风伴你行: Microsoft.Practices.EnterpriseLibrary.Data 下的Database 有public virtual int ExecuteNonQuery(string storedProcedureName, params object[] parameterValues);这个方法但是我传入的SqlParameter[] 却不行,这让我很困扰
@天空很广阔: 你为什么要用这个组件呢?用自带的哪个Command执行不行么?
@清风伴你行: 能行 不过这个不需要建立连接等操作, 这个直接能够使用,我用了用一种方式 解决了
DbCommand cmd = db.GetStoredProcCommand("pro_CreateUserInfo");
db.AddInParameter(cmd, "username", DbType.String, user.Name);
db.AddInParameter(cmd, "passWord", DbType.String, user.Password);
db.AddInParameter(cmd, "Email", DbType.String, user.Email);
db.AddOutParameter(cmd, "value", DbType.String, 50);
db.ExecuteNonQuery(cmd);
string value = db.GetParameterValue(cmd, "value").ToString();
return value;
@天空很广阔: 没用过这个组件,解决了就好,学习了
当时楼主就震惊了,好多人帮忙啊,小学生只能看看!不明觉厉!
The method comments descrip clearly
//
// Summary:
// Executes the storedProcedureName using the given parameterValues and returns
// the number of rows affected.
//
// Parameters:
// storedProcedureName:
// The name of the stored procedure to execute.
//
// parameterValues:
// An array of paramters to pass to the stored procedure. The parameter values must
// be in call order as they appear in the stored procedure.
//
// Returns:
// The number of rows affected
public virtual int ExecuteNonQuery(string storedProcedureName, params object[] parameterValues);