批量导入SQL数据库的错误
我做了一个datagridview导入SQL数据库的模块,然后在数据库里面设置了A列不能为空.
现在有2个模块,第一个模块是一条一条输入数据,然后保存,这个没问题.
第二个模块是选择某一个excel 文件,然后把excel 的数据装入datagridview,再把datagridview的数据批量写入到sql数据库里面,这时就出现问题,即使A列是空值,依然可以写入,sql一点反应都没有,try/catch也捕捉不到任何异常?救命啊~~~
第一个模块(手动录入)
第二个模块(批量导入)
批量导入代码:
private void inserttosql(DataRow dr)
{
string connstr = "server=JJJKKK;Initial Catalog=dt_xxgl;UID=sa;PWD=123";
string xm = dr["姓名"].ToString();
string sfz = dr["身份证"].ToString();
string xb = dr["性别"].ToString();
string csrq = dr["出生日期"].ToString();
string xz = dr["乡镇"].ToString();
string xxdz = dr["详细地址"].ToString();
string bz = dr["备注"].ToString();
string sql = "insert into jbxx(姓名,身份证,性别,出生日期,乡镇,详细地址,备注) values('" + xm + "','" + sfz + "','" + xb + "','" + csrq + "','" + xz +"','" + xxdz +"','" + bz +"')";
SqlConnection conn = new SqlConnection(connstr);
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
textBox1.Text = null;
}
private void btn_insert_Click(object sender, EventArgs e)
{
if (dataGridView1.Rows.Count > 0 )
{
DataRow dr = null;
try
{
for (int i = 0; i < dt.Rows.Count; i++)
{
dr = dt.Rows[i];
inserttosql(dr);
}
MessageBox.Show("插入成功!");
dataGridView1.DataSource = null;
}
catch (Exception err)
{
MessageBox.Show("操作失败!" + err.ToString());
}
}
else
{
MessageBox.Show("没有数据!");
}
}
------解决方案--------------------
数据库里面设置不能为空是指,不能为NULL, 空字符串"" 不是null.
你的代码中,并没有判断datagridview中的cell是不是为null,还是空字符串.