SqlCommand.Parameters转SqlParamet

2022-04-06  本文已影响0人  吉凶以情迁

经过测试发现 直接循环赋值发现, 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 };
上一篇 下一篇

猜你喜欢

热点阅读