c# - C# 从 DataGridView 插入 MySQL 后数据被截断
问题描述
我制作了一个小应用程序,通过单击按钮自动将 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();
}
}
解决方案
您想将MySQL的SQL 模式设置为传统。这将启用Strict SQL Mode,这将在插入或更新期间截断数据时引发错误。
正如其他人评论的那样,一种用户友好的方法是在用户尝试存储数据之前另外让用户意识到限制。
推荐阅读
- java - 检查文件是否存在在 Android 中不起作用。总是说文件不存在
- android - Web 应用程序中的 Restful API
- r - renderDT 只显示标题而不显示任何行
- python - ValueError:无法为具有形状“(?,2)”的张量“目标/ Y:0”提供形状(64、4)的值
- c - 从 Linux 编译到 Windows
- spring - Global exception handler across the camel context – covering all routes
- swift - 在 UILabel 中查看带两位小数的数字
- javascript - 从 AJAX 函数调用 Django 视图
- react-native - Cant Build Apk from react native in ubutnu
- jekyll - 不要在 Jekyll 构建中输出 markdown,只输出 HTML