想问一下参数问题,

maygu3 2005-06-28 04:37:20
public static bool addQytd (string tableName,string gsmc)
{
SqlParameter[] Parameters = {
new SqlParameter("@tableName",SqlDbType.NVarChar,20),
new SqlParameter("@gsmc",SqlDbType.NVarChar,50)
}
因参数太多
想用循环实现Parameters[0].Value = tableName;这种赋值
...全文
137 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanruinet 2005-06-28
  • 打赏
  • 举报
回复
其实创建这个多维数组还不如直接创建一个SqlParametersCollection,直接添加进来就好了
maygu3 2005-06-28
  • 打赏
  • 举报
回复
可以以多维数组传进来,里面就可以写好数据类型,长度等,
zeusvenus 2005-06-28
  • 打赏
  • 举报
回复
mark
fanruinet 2005-06-28
  • 打赏
  • 举报
回复
传进来的数组是什么样的?数据类型、长度都在哪里?
maygu3 2005-06-28
  • 打赏
  • 举报
回复
是的,传数组进来,然后一一对应,-
zhongwanli 2005-06-28
  • 打赏
  • 举报
回复
那你可以考虑数组,一一对应就好
maygu3 2005-06-28
  • 打赏
  • 举报
回复
hedonister,你的必需放在DataTable里了,一样感谢
maygu3 2005-06-28
  • 打赏
  • 举报
回复
谢谢,我细看一下
hedonister 2005-06-28
  • 打赏
  • 举报
回复
上面有局限性,必须是参数名为 @+表中字段名
只能提供思路上的参考,你觉得有用就想办法改吧
hedonister 2005-06-28
  • 打赏
  • 举报
回复
看这个合适么?

//获取存储过程参数,适合于存放在DataTable的大量参数
private SqlParameter[] GetParam(DataRow row)
{
DataColumnCollection cols;

cols = row.Table.Columns;

int iBound = cols.Count;

SqlParameter[] Params = new SqlParameter[iBound];
SqlParameter Param = new SqlParameter();

string strColumnName;
int iIndex = 0;

object oRowValue = null;

foreach(DataColumn col in cols)
{
strColumnName = col.ColumnName;

oRowValue = row[col];

if (oRowValue == System.DBNull.Value)
{
oRowValue = DBNull.Value;
}

if (col.DataType.ToString() == "System.Byte[]")
{
Param = new SqlParameter("@"+strColumnName,SqlDbType.Timestamp, 8);
Param.Direction = ParameterDirection.Input;
Param.Value = oRowValue;
}
else
{
Param = new SqlParameter();

Param.ParameterName = "@"+strColumnName;
Param.SqlDbType = GetColSqlDbType(col);
Param.Direction = ParameterDirection.Input;
Param.Value = oRowValue;
}


//Params[iIndex] = new SqlParameter("@"+strColumnName,oRowValue);
Params[iIndex] = Param;
iIndex ++;
}

return Params;
}

//转换数据类型
private SqlDbType GetColSqlDbType(DataColumn col)
{
string strType = col.DataType.ToString();

switch(strType)
{
case "System.Int32":
return SqlDbType.Int;
case "System.DateTime":
return SqlDbType.DateTime;
case "System.Double":
return SqlDbType.Decimal;
case "System.String":
return SqlDbType.Char;
case "System.Byte[]":
return SqlDbType.Timestamp;
default:
return SqlDbType.Char;
}

}
fanruinet 2005-06-28
  • 打赏
  • 举报
回复
如果所有的参数类型、长度一样的话用循环还比较好,不然还至少需要构造一个参数类型、长度、值的列表,不值得
maygu3 2005-06-28
  • 打赏
  • 举报
回复
急,急急,急急,急急,急急,急急,急急,急急,急急,急急,急急,急急,急急,急急,急急,急急,急急,急急,急急,急

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧