这是我的DB:
我想在我的状态表中添加一个新行,这里是: 我没有得到任何VB错误,也没有mySQL错误,所以我想我错过了一些重要的事情要添加到这里。
你能帮帮我吗?提前致谢 Try
Dim SqlQuery As String = "INSERT INTO presence(id_presence,id,hours,date) " & _
"SELECT DISTINCT @Id_presence,@Id,@Hours,@Date FROM presence"
Using con = New MySqlConnection("Server = localhost;Database = accounts; Uid=root; Pwd = password")
Using SQLcmd = New MySqlCommand(SqlQuery, con)
con.Open()
SQLcmd.Parameters.Add(New MySqlParameter("@Id_presence", TextBox1.Text))
SQLcmd.Parameters.Add(New MySqlParameter("@Id", TextBox2.Text))
SQLcmd.Parameters.Add(New MySqlParameter("@Hours", TextBox3.Text))
SQLcmd.Parameters.Add(New MySqlParameter("@Date", TextBox4.Text))
End Using
End Using
Catch ex As Exception
End Try
答案 0 :(得分:3)
将新记录添加到表中的正确语法应为
Dim SqlQuery As String = "INSERT INTO presence(id_presence,id,hours,date) " & _
"VALUES (@Id_presence,@Id,@Hours,@Date)"
当然,每个命令都应该被执行,否则它只是一个有用的代码行 创建参数后,您缺少此行。
SQLcmd.ExecuteNonQuery()
从您的图像中无法确定,但如果idpresence是AUTOINCREMENT字段,那么您不应尝试使用您的命令和参数设置其值,而是让数据库为您执行此操作。 (如果多个用户同时插入记录,则可能出现重复键问题)
最后,你的参数'未指定type,因此它们不匹配基础数据表架构。您可以使用AddWithValue并将输入文本框值转换为正确的数据库类型
SQLcmd.Parameters.AddWithValue("@Id_presence", Convert.ToInt32(TextBox1.Text))
SQLcmd.Parameters.AddWithValue("@Id", Convert.ToInt32(TextBox2.Text))
SQLcmd.Parameters.AddWithValue("@Hours", Convert.ToInt32(TextBox3.Text))
SQLcmd.Parameters.AddWithValue("@Date", Convert.ToDateTime(TextBox4.Text))
答案 1 :(得分:1)
在结束使用
之前添加SQLcmd.ExecuteNonQuery();
以执行它
实施例
Public Sub CreateCommand(ByVal queryString As String, _
ByVal connectionString As String)
Using connection As New SqlConnection(connectionString)
Dim command As New SqlCommand(queryString, connection)
command.Connection.Open()
command.ExecuteNonQuery()
End Using
End Sub