本文主要是介绍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 };
这篇关于SqlCommand.Parameters转SqlParameter 的输出函数取值为空的坑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!