我制作了一个小型应用程序,该应用程序通过单击按钮自动将数据从datagridview插入MySQL表中。我的问题是,粘贴到MySQL表后,某些数据被简单地截断了,因为它包含的字符串比表所允许的更多。发生这种情况时我没有注意到,我正在寻找解决方案。仅增加MySQL中的字符串数不是解决方案。最后,仅应保存尚未真正自动缩短的数据记录。谢谢
这是我的代码:
private void button2_Click(object sender, EventArgs e)
{
for (int i = 0 ; i < dataGridView1.Rows.Count - 1; i++) // dòng
{
string str = "server=xxxx; database=xxxx; uid=xxxx; pwd=xxxxxx;";
MySqlConnection constr = new MySqlConnection(str);
constr.Open();
String cmdText = "INSERT INTO table (spalte1, spalte2, spalte3) VALUES ('"
+ dataGridView1.Rows[i].Cells[0].Value + "','"
+ dataGridView1.Rows[i].Cells[1].Value + "','"
+ Convert.ToDateTime(dataGridView1.Rows[i].Cells[2].Value).ToString("yyyy-MM-dd HH:mm:ss.fff") + "','"
+ dataGridView1.Rows[i].Cells[3].Value + "')";
MySqlCommand cmd = new MySqlCommand(cmdText, constr);
cmd.ExecuteNonQuery();
constr.Close();
}
}
答案 0 :(得分:3)
您要将MySQL的SQL Mode设置为Traditional。这将启用Strict SQL Mode,在插入或更新过程中数据被截断时会引发错误。
正如其他人所评论的那样,一种用户友好的方法是在使用户尝试存储数据之前让他们另外了解限制。