我将数据从数据网格插入到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!");
答案 0 :(得分:1)
在C#中,datagridview最后一行始终为空。
如果您显示数据,每次都会有一个空行,您可以轻松查看,这就是您收到此错误的原因。
要删除此空行,您可以使用:
WPF的EDIT代码:
添加
<DataGrid CanUserAddRows="False" IsReadOnly ="true"/>
或
<DataGridTextColumn CanUserAddRows="False" IsReadOnly ="true"/>
在XAML中
答案 1 :(得分:-1)
也许ItemSource的末尾有空行?
尝试:
foreach(DataRowView dr in gridxl.ItemsSource)
{
if (dr["sid"] != null)
{
cmd.Parameters.Clear();
cmd.Parameters.AddWithValue("@sid", dr["sid"]);
cmd.Parameters.AddWithValue("@name", dr["name"]);
cmd.Parameters.AddWithValue("@fathername", dr["fathername"]);
cmd.ExecuteNonQuery();
}
}