日期:2014-05-18  浏览次数:20463 次

如何将将一个数组传入到SqlParameter[]中

我有一类库,程序如下:

//说明;string[,] fvalue 为二维数组,格式定如下:

fvalue[i,1]=""; //参数名称
fvalue[i,2]=""; //参数类型
fvalue[i,3]=""; //参数类型长度
fvalue[i,4]=""; //参数值

SqlParameter MakeItem(string[,] fvalue)
{
.....

  SqlParameter[] prams = {
this.MakeInParam("@fid",SqlDbType.Int,4,fid)
};

//问题所在点,如何将上面的数组fvalue 转换为此处{
this.MakeInParam("@fid",SqlDbType.Int,4,fid),this.MakeInParam("@fid",SqlDbType.Int,4,fid),......
 

....
}

/// <summary>
/// 创建存储过程使用的参数.
/// </summary>
/// <param name="ParamName">参数名称.</param>
/// <param name="DbType">参数类型.</param>
/// <param name="Size">参数大小.</param>
/// <param name="Direction">参数方向(Direction).</param>
/// <param name="Value">参数对应对应值.</param>
/// <returns>返回创建的新参数.</returns>
protected SqlParameter MakeParam(string ParamName, SqlDbType DbType, int Size, ParameterDirection Direction, object Value) 
{
SqlParameter param;

if(Size > 0)
{
param = new SqlParameter(ParamName, DbType, Size);
}
else
{
param = new SqlParameter(ParamName, DbType);
}

param.Direction = Direction;
if (!(Direction == ParameterDirection.Output && Value == null))
{
param.Value = Value;
}

return param;
}

------解决方案--------------------
//说明;string[,] fvalue 为二维数组,格式定如下: 

fvalue[i,1]=""; //参数名称 
fvalue[i,2]=""; //参数类型 
fvalue[i,3]=""; //参数类型长度 
fvalue[i,4]=""; //参数值 

SqlParameter[] sParams=new SqlParameter[fvalue.length];
for(int i = 0; i < fvalue.length; i++)
{
sParams[i] = new SqlParameter(...);
}
------解决方案--------------------


C# code


        // 简单说一下,
        // 不应该定义成2维 字符串数组,
        //应该是一个参数对应为一个类或结构体

        //具有四个属性 分别为 参数名称 string ,参数类型 int , ,参数值 object 
        //传递多个参数时 将各个类或结构体 放在范型集合中,传递那个范型集合
        //参数名称 string ,参数类型长度 int ,参数值 object  这三个没什么说的,直接赋值就OK了

        //参数类型 int 需要转换一下 SqlDbType s= (SqlDbType)0;这个形式就可以

------解决方案--------------------
C# code

        //        // 摘要:
        ////     System.Int64。64 位的有符号整数。
        //BigInt = 0,
        ////
        //// 摘要:
        ////     System.Byte 类型的 System.Array。二进制数据的固定长度流,范围在 1 到 8,000 个字节之间。
        //Binary = 1,
        ////
        //// 摘要:
        ////     System.Boolean。无符号数值,可以是 0、1 或null。
        //Bit = 2,
        ////
        //// 摘要:
        ////     System.String。非 Unicode 字符的固定长度流,范围在 1 到 8,000 个字符之间。
        //Char = 3,
        ////
        //// 摘要:
        ////     System.DateTime。日期和时间数据,值范围从 1753 年 1 月 1 日到 9999 年 12 月 31 日,精度为 3.33 毫秒。
        //DateTime = 4,
        ////
        //// 摘要:
        ////     System.Decimal。固定精度和小数位数数值,在 -10 38 -1 和 10 38 -1 之间。
        //Decimal = 5,
        ////
        //// 摘要:
        ////     System.Double。-1.79E +308 到 1.79E +308 范围内的浮点数。
        //Float = 6,
        ////
        //// 摘要:
        ////     System.Byte 类型的 System.Array。二进制数据的可变长度流,范围在 0 到 2 31 -1(即 2,147,483,647)字节之间。
        //Image = 7,
        ////
        //// 摘要:
        ////     System.Int32。32 位的有符号整数。
        //Int = 8,
        ////
        //// 摘要:
        ////     System.Decimal。货币值,范围在 -2 63(即 -922,337,203,685,477.5808)到 2 63 -1(即 +922,337,203,685,477.5807)之间,精度为千分之十个货币单位。
        //M