//内容的操作
        public static void Update(DataTable dt)
        {
            SqlCommand insertCmd = new SqlCommand("insert into authors(author_id,lastname,firstname,company) values (@sid,@last,@first,@compary)", GetConnection());
            insertCmd.Parameters.Add(new SqlParameter("@sid", SqlDbType.Int, 10));
            insertCmd.Parameters.Add(new SqlParameter("@last", SqlDbType.Char, 10));
            insertCmd.Parameters.Add(new SqlParameter("@first", SqlDbType.Char, 10));
            insertCmd.Parameters.Add(new SqlParameter("@compary", SqlDbType.Char, 10));
            da.InsertCommand = insertCmd;
            da.Update(dt);
            dt.AcceptChanges();
}
datatable中是有数据的
这样也会报错说:参数化查询 '(@sid int,@last char(10),@first char(10),@compary char(10))inser' 需要参数 @sid,但未提供该参数。这是什么情况?

解决方案 »

  1.   

    你创建了参数,但是调用之前没有为参数赋值!
    nsertCmd.Parameters["@sid"]=value;
      

  2.   

    insertCmd.Parameters.Add(new SqlParameter("@sid", SqlDbType.Int, 10, "@sid"));
    nsertCmd.Parameters["@sid"].Value = n; /* n 是 sid 的值,例如 12 */
      

  3.   

    insertCmd.Parameters.Add(new SqlParameter("@sid", SqlDbType.Int, 4, "@sid")); /* 4 是表示 sid 的大小是4字节 */
    nsertCmd.Parameters["@sid"].Value = n; /* n 是 sid 的值,例如 12 */
      

  4.   

      insertCmd.Parameters.Add(new SqlParameter("@sid", SqlDbType.Int, 10,列名));
    额 貌似 再加个参数也可以