这是我的代码,我不知道为什么我在我的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() 结束如果
答案 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