我建立了如下函数,插入四个字段时可以正常操作,但插入21个字段时,在添加参数列表时就提示“索引必须大于零且小于等于参数列表数”。哪个仁兄教教我是什么问题,应该怎样处理为妙。多谢!public bool AddInfo(Hashtable htValuse,string tableName)//将htValuse内的值插入tableName所指向的表中.
{


string strF=null;
string strS=null;
SqlParameter pa;
IDictionaryEnumerator myEnumerator = htValuse.GetEnumerator();
int count=0;
while(myEnumerator.MoveNext())
{
if(count++<htValuse.Count-1)
{
strF+=myEnumerator.Key+",";
strS+="@"+myEnumerator.Key+",";
}
else
{
strF+=myEnumerator.Key;
strS+="@"+myEnumerator.Key;
} } string sql="insert into "+tableName+"("+strF+") values("+strS+")";
SqlCommand cmd=new SqlCommand(sql,sqlCon); myEnumerator.Reset(); while(myEnumerator.MoveNext())
{
pa=cmd.Parameters.Add("@"+myEnumerator.Key,myEnumerator.Value);
}
sqlCon.Open();
int addCount;
addCount=cmd.ExecuteNonQuery();
if(addCount>0)
{
return true;
}
return false;
}

解决方案 »

  1.   

    唉~~~我将myEnumerator.Key改成myEnumerator.Key.ToString(),myEnumerator.Values改成myEnumerator.Values.ToString()就可以通过了。现在却又出现另一个问题:在执行SQL语句时,提示错误“将截断字符串或二进制数据。语句已终止”
    请问这是什么意思????
    单独执行SQL语句插入时,操作成功。SQL语句语法和字段数据类型都应该没有问题。
      

  2.   

    这个问题的原因可能是这样的:
    如:表T_User中有个字段叫Name,你定义的长度是nvarchar(50),你通过参数传了个长度为100的字符串给它。
    这只是我的分析。哈。
      

  3.   

    现在却又出现另一个问题:在执行SQL语句时,提示错误“将截断字符串或二进制数据。语句已终止”
    请问这是什么意思????
    单独执行SQL语句插入时,操作成功。SQL语句语法和字段数据类型都应该没有问题。
    --------------
    你的表中字段小了,改大了就没问题了.
    你查一查