我正在尝试使用vb.net中的函数来构建一个准备好的语句来保存到mysql数据库,但是使用.net连接器为mysql提供的示例,我很难让它工作。
我的功能看起来像这样......
Public Function TestSQLUpdate(ByVal link_id As String, ByRef updatetext As String, ByRef entrytype As String)
Dim conn As New MySqlConnection
Dim cmd As New MySqlCommand
conn.ConnectionString = main.connection_string
Try
conn.Open()
cmd.Connection = conn
cmd.CommandText = "INSERT INTO case_updates VALUES(@lid, @updatext, @entrytype, @user)"
cmd.Prepare()
cmd.Parameters.AddWithValue("@lid", lid)
cmd.Parameters.AddWithValue("@updatetxt", updatetext)
cmd.Parameters.AddWithValue("@entrytype", entrytype)
cmd.Parameters.AddWithValue("@user", main.activeuser)
cmd.ExecuteNonQuery()
Catch ex As MySqlException
MessageBox.Show("Error " & ex.Number & " has occurred: " & ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Function
我正在运行此测试,但得到错误:
列数与第1行的值计数不匹配
我的字段数与参数数量相同,所以我不确定哪里出错了。
对不起,如果这是一个愚蠢的问题;当你知道答案时,它们很容易! :)
答案 0 :(得分:0)
错误不是参数计数与提供的参数数量不匹配的结果。
在insert语句中,您没有指定要将值插入哪些列,因此mysql希望您为表中的所有列提供值。 case_updates
表有4列以上,因此出现错误消息。您需要为values()
子句中的表中的所有列提供值,或者您需要列出要插入的列。
INSERT INTO case_updates(lid, updatetext, entrytype, `user`) ...
(假设您的字段名称与参数名称匹配)