针对列截断的MySQL查询浏览器错误数据

时间:2018-01-19 01:59:36

标签: mysql vb.net

这是我的代码,我不知道为什么我在我的visual studio 2013中收到此错误,我的数据库是MySQL Query Browser:

"其他信息:ERROR [HY000] [MySQL] [ODBC 3.51驱动程序] [mysqld-5.1.34-community]数据被截断用于列' userid'在第1行"

如果a ="新"然后             Dim sqlstring As String             sqlstring =" INSERT到用户(用户名,用户ID,用户类型,备注)值('"& TextBox1.Text&"'''&# 34;& TextBox2.Text&"''"& ComboBox1.Text&"','" & TextBox4.Text&"')"             cmd =新的Odbc.OdbcCommand(sqlstring,cnn)             cmd.ExecuteNonQuery()             重启()             禁用()             btn3()         结束如果

1 个答案:

答案 0 :(得分:0)

这是因为您传递的字符的总长度超过了列userid定义的长度。除此之外,mysql有自己的托管提供程序MySqlClient,这是你应该使用的。

良好实践编程的一种更好的方法是对您的查询进行参数化。以下示例至少是您的良好起点:

Dim connectionString As String = "..your connection string here..."
Using SQLConnection As New MySqlConnection(connectionString)
   Using sqlCommand As New MySqlCommand()
      sqlCommand.CommandText = "INSERT into users(username, userid, usertype, remarks) VALUES (@username, @userid, @usertype, @remarks)"
      sqlCommand.Connection = SQLConnection
      sqlCommand.CommandType = CommandType.Text
      sqlCommand.Parameters.AddWithValue("@username", TextBox1.Text)
      sqlCommand.Parameters.AddWithValue("@userid", TextBox2.Text)
      sqlCommand.Parameters.AddWithValue("@usertype", ComboBox1.Text)
      sqlCommand.Parameters.AddWithValue("@remarks", TextBox4.Text)
      SQLConnection.Open()
      sqlCommand.ExecuteNonQuery()
   End Using
End Using