不好意思,忙中出错,请看下面的源码int col_count = ds.Tables[dbTbName].Columns.Count;
SqlParameter[] sp = new SqlParameter[col_count-1];
//i=1主要是为了把索引列cid去掉
for(int i=1;i<col_count;i++){
   sp[i-1]=new SqlParameter();
   sp[i-1].ParameterName = "@"+ds.Tables[dbTbName].Columns[i].ColumnName;
   //下面两行出错,实在搞不定:(
   sp[i-1].SqlDbType= ds.Tables[dbTbName].Columns[i].DataType;
   sp[i-1].Size = Sizeof(ds.Tables[dbTbName].Columns[i].DataType);
  //上面的两行出错,实在搞不定:(
   sp[i-1].SourceColumn=ds.Tables[dbTbName].Columns[i].ColumnName;
   this.sqlInsertCommand1.Parameters.Add(sp[i-1]);
}

解决方案 »

  1.   

    谢谢楼上的
    sp[i-1].SqlDbType= ds.Tables[dbTbName].Columns[i].DataType;
    这行出错,是因为DataType无法转换成SqlDbType
      

  2.   

    改成:
    for(int i=1;i<col_count;i++){
    this.sqlInsertCommand1.Parameters.Add("@"+ds.Tables[dbTbName].Columns[i].ColumnName, ds.Tables[dbTbName].Columns[i].DataType, Sizeof(ds.Tables[dbTbName].Columns[i].DataType), ds.Tables[dbTbName].Columns[i].ColumnName);
    }
      

  3.   

    SqlDbType , 是个枚举,
    ds.Tables[dbTbName].Columns[i].DataType 是TYPE 类,如果你真想让它自动分配类型的话你可以试试System.Data.SqlClient.SqlCommandBuilder.DeriveParameters ()它会HELP YOU把DbType搞定的
      

  4.   

    同意 lansingcy(小子) 的方法
      

  5.   

    由于dataset中dataTable类型的列是动态读取sqlserver中的表的,所以预先不能指定,所以.....
    help me
      

  6.   

    //
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
    //
    SetStyle(ControlStyles.UserPaint,true);
    SetStyle(ControlStyles.AllPaintingInWmPaint,true);
    SetStyle(ControlStyles.DoubleBuffer,true);
    SetStyle(ControlStyles.ResizeRedraw, true);
      

  7.   

    你看看这里吧
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/daab-rm.asp