C#向数据库中插入空行,而后给主键一个内容,最后更新dataset,但为何总是报我插入了null错误?

C#向数据库中插入空行,而后给主键一个内容,最后更新dataset,但为何总是报我插入了null错误?

我的代码如下:

string coon = "server=.;uid=sa;pwd=123456;Database=" + myglobaldate.DBname;
            SqlConnection CN = new SqlConnection(coon);
            CN.Open();
            string weekdaystr = "select * from " + strMtablename;
            SqlDataAdapter adp = new SqlDataAdapter(weekdaystr, CN);
            DataSet ds = new DataSet();
            adp.Fill(ds);
            DataTable dstable = ds.Tables[0];
            DataRow drw = dstable.NewRow();
            dstable.Rows.Add(drw);           // 插入空行        

            ds.Tables[0].Rows[0][0] = "星期"; //主键姓名列给一个值
     
            for (i5=1; i5<= monthday;i5++)
            {
                DateTime myusedate = Convert.ToDateTime(DateTime.Now.Month.ToString() + "-" + i5.ToString());                
                Program.MyWeekcheck1(myusedate, out signday);
                ds.Tables[0].Rows[0][i5] = signday.ToString();            
            }
            SqlCommandBuilder buld = new SqlCommandBuilder(adp);     
            adp.Update(ds);                                //我认为我已经给主键一个值,就不为空了,但是程序执行到这里总是报错

报错如下:

img

且我查看数据库中,有时候即使这里报错了,但是数据其实还是写入了数据库中的,请问这个问题出现的原因在哪里?

看下表定义,所有的非空字段,插入的时候都必须给值
另外就是表的主键id,是否设置为自增列了,如果没有设置,也会出这个错误。

报错是否由其它SQL造成?姓名 列给值了吗? baseDB.dbo.Y_2023_5月 这个表数据在哪插入的?
看你的表结构,可能不只是主键不允许空。