SqlDataAdapter da = new SqlDataAdapter("select * from command;", TheConnection); 
            cmd.CommandText = "insert into command values(?,?,?,?);"; 
            cmd.Parameters.Add("@a", SqlDbType.Int); 
            cmd.Parameters.Add("@b", SqlDbType.VarChar); 
            cmd.Parameters.Add("@c", SqlDbType.Int); 
            cmd.Parameters.Add("@d", SqlDbType.Date); 
            da.InsertCommand = cmd; 
            DataSet ds = new DataSet(); 
            da.Fill(ds); 
            DataTable dt = ds.Tables[0]; 
            dt.PrimaryKey = new DataColumn[] { dt.Columns["ID"] }; 
            DataRow dr = null; 
            for (int i = 0; i < 10;i++ ) 
            { 
                dr = dt.NewRow(); 
                dr["id"] = i+1; 
                dr["name"] = "huihui"; 
                dr["age"] = 20+i; 
                dr["intime"] = System.DateTime.Today; 
                ds.Tables[0].Rows.Add(dr); 
            } 
            da.Update(ds); 
            da.Dispose(); 
--------------------------------------------- 
da.Update(ds);执行以后是向数据库里有插入语句的操作 ,但是插入的都是NULL值 
报错 属性不能为空。 谢谢!!!! 

解决方案 »

  1.   

    确保你的insert语句正确
    sql 的参数应该是 @参数名 形式
    确保数据库允许插入空值
      

  2.   


    insert 语句正确,sql的参数写的也正确 粘贴的时候错了
    有主键 所以不能插入空值
    但是就是update的时候插入的都是NULL
      

  3.   

    不写command的列名,请确保你的command表只有4列
      

  4.   

    已解决,方法如下: 
                SqlDataAdapter da = new SqlDataAdapter("select * from command;", TheConnection); 
                da.InsertCommand=new OscarCommand("insert into command values(?,?,?,?);",TheConnection); 
                OscarParameter sp1 = da.InsertCommand.Parameters.Add("@a", OscarDbType.Int); 
                sp1.SourceColumn = "id"; 
                OscarParameter sp2 = da.InsertCommand.Parameters.Add("@b", OscarDbType.VarChar); 
                sp2.SourceColumn = "name"; 
                OscarParameter sp3 = da.InsertCommand.Parameters.Add("@c", OscarDbType.Int); 
                sp3.SourceColumn = "age"; 
                OscarParameter sp4 = da.InsertCommand.Parameters.Add("@d", OscarDbType.Date); 
                sp4.SourceColumn = "intime"; 
    其中parameter还有个属性SourceVersion也很重要 
    以前驱动是OSCAR数据库的,改下类就是SQLserver的