【问题标题】:MySQL Query Browser Error Data truncated for columnMySQL 查询浏览器错误数据截断列
【发布时间】:2018-06-28 05:19:22
【问题描述】:

这是我的代码,我不知道为什么在我的 Visual Studio 2013 中出现此错误,而我的数据库是 MySQL 查询浏览器:

“附加信息:错误 [HY000] [MySQL][ODBC 3.51 驱动程序][mysqld-5.1.34-community]第 1 行的列 'userid' 的数据被截断”

如果 a = "New" 那么 将 sqlstring 调暗为字符串 sqlstring = "插入用户(用户名、用户ID、用户类型、备注)值('" & TextBox1.Text & "','" & TextBox2.Text & "','" & ComboBox1.Text & "','" & TextBox4.Text & "')" cmd = 新 Odbc.OdbcCommand(sqlstring, cnn) cmd.ExecuteNonQuery() 重置() 禁用() btn3() 结束如果

【问题讨论】:

  • 问题很可能是您为该列传递的值对于列定义来说太长了。除此之外,切勿使用字符串连接将值插入到 SQL 代码中。总是use parameters.
  • 另外,Odbc 应该是 ADO.NET 提供程序的最后选择。如果您正在使用 MySQL,那么,如果可以,您应该从 MySQL 网站下载 Connector/Net 并使用它。 MySqlClient 是特定于 MySQL 的提供程序,就像 SqlClient 特定于 SQL Server 一样。也可以下载一些 MySQL 专用的 VS 工具,支持 EF 等。

标签: mysql vb.net


【解决方案1】:

这是因为您传递的字符的总长度超过了列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

【讨论】:

    猜你喜欢
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 2023-03-13
    • 2015-08-28
    • 2021-08-28
    • 1970-01-01
    相关资源
    最近更新 更多