0
点赞
收藏
分享

微信扫一扫

SqlCommand.Parameters转SqlParameter 的输出函数取值为空的坑


经过测试发现 直接循环赋值发现, SqlCommand.Parameters没指定size,但是转sqlparammeter没指定size就会导致字符串为空, 之前也尝试过拷贝,发现内存中size就是0 ,所以针对字符串只能强制给定大小。

SqlParameter sqlParameter;
if (sqlCommand.Parameters[i].SqlDbType == SqlDbType.VarChar|| sqlCommand.Parameters[i].SqlDbType==SqlDbType.NVarChar)//必须指定size,否则字符串获取为空
{
sqlParameter = new SqlParameter(sqlCommand.Parameters[i].ParameterName, SqlDbType.VarChar,500) { Value = sqlCommand.Parameters[i].Value, Direction = sqlCommand.Parameters[i].Direction };
}

cmd.Parameters.Add("@x", SqlDbType.VarChar);
cmd.Parameters["@x"].Precision = 19;
cmd.Parameters["@x"].Scale = 5;
cmd.Parameters["@x"].Direction = ParameterDirection.Output;

定义方法的多种构造

sqlParameter = new SqlParameter(sqlCommand.Parameters[i].ParameterName, SqlDbType.VarChar,500) { Value = sqlCommand.Parameters[i].Value, Direction = sqlCommand.Parameters[i].Direction };

或者不指定(针对非字符串类型)

sqlParameter = new SqlParameter(sqlCommand.Parameters[i].ParameterName, SqlDbType.Decimal) { Value = sqlCommand.Parameters[i].Value, Direction = sqlCommand.Parameters[i].Direction };

举报

相关推荐

0 条评论