C# MySqlCommand-参数插入工作不正常

C# MySqlCommand-参数插入工作不正常,c#,C#,我正在将数据从数据网格插入MySQL表,插入工作正常,数据被插入,但最后它给出了错误,即尽管数据被插入到表中,但sid不能为null。请检查我的密码 MySqlConnection cn = new MySqlConnection(@"connectionstring"); string query = "insert into excel_table (sid,name,fathername)values(@sid,@name,@fathern

我正在将数据从数据网格插入MySQL表,插入工作正常,数据被插入,但最后它给出了错误,即尽管数据被插入到表中,但sid不能为null。请检查我的密码

        MySqlConnection cn = new MySqlConnection(@"connectionstring");         
        string query = "insert into excel_table (sid,name,fathername)values(@sid,@name,@fathername)";
        MySqlCommand cmd = new MySqlCommand(query, cn);
        cn.Open();       

        foreach(DataRowView dr in gridxl.ItemsSource)
        {
            cmd.Parameters.Clear();
            cmd.Parameters.AddWithValue("@sid", dr["sid"]);
            cmd.Parameters.AddWithValue("@name", dr["name"]);
            cmd.Parameters.AddWithValue("@fathername", dr["fathername"]);
            cmd.ExecuteNonQuery();
        }
        cn.Close();
        MessageBox.Show("saved!");

也许ItemSource的末尾有一个空行

尝试:


在C中,datagridview最后一行始终为空

如果你显示你的数据,每次都会有一个空行,你可以很容易地检查它,这就是为什么你会出现这个错误

要删除此空行,可以使用:

WPF的编辑代码:

加上

<DataGrid CanUserAddRows="False" IsReadOnly ="true"/>


在XAML中

可能不相关,但请注意,执行过程结束时sid是否为null?excel_表的表定义是什么?您不允许sid为null,但dr[sid]以某种方式返回null@codefan,这可能是因为在datagridview中,最后一行始终为空,我很确定如果你评论cmd.Parameters。AddWithValue@sid,dr[sid];新的错误消息将是name不能为null,请尝试并告诉我们。请将此消息作为COMMENTIT在wpf中的datagrid而不是gridview,datagrid项源是excelfile@codefan您是否仍然看到datagrid末尾带有此参数的空行,或者没有任何更改?因为如果您仍然可以看到一个空行,这意味着您没有正确地实现此属性。在将数据加载到网格之前,存在一个空字段,但在加载数据时,该字段已消失。当我使用你的语言时没有变化code@codefan如果您确定加载数据时,最后一行不是空的,这意味着您在某处获得了一个空信息。你能通过插入参数fathername来测试你的函数吗?看看错误是否仍然存在。我仍然有这个问题
<DataGrid CanUserAddRows="False" IsReadOnly ="true"/>
<DataGridTextColumn CanUserAddRows="False" IsReadOnly ="true"/>