VB.NET mySQL insert命令

VB.NET mySQL insert命令,mysql,vb.net,Mysql,Vb.net,这是我的数据库: 我正在尝试向我的状态表中添加新行,如下所示: 我没有得到任何VB错误或mySQL错误,所以我想我遗漏了一些重要的东西 你们能帮帮我吗?提前谢谢 Try Dim SqlQuery As String = "INSERT INTO presence(id_presence,id,hours,date) " & _ "SELECT DISTINCT @Id_presence,@Id,@Hours,@Date FROM prese

这是我的数据库:

我正在尝试向我的状态表中添加新行,如下所示: 我没有得到任何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

添加
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
参考:

添加
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
参考:

向表中添加新记录的正确语法应为

 Dim SqlQuery As String = "INSERT INTO presence(id_presence,id,hours,date) " & _
                          "VALUES (@Id_presence,@Id,@Hours,@Date)"
当然,每个命令都应该执行,否则它只是一行无用的代码。
创建参数后,您将缺少这一行

  SQLcmd.ExecuteNonQuery()
从您的图像无法确定,但如果idpresence是一个自动增量字段,则不应尝试使用命令和参数设置其值,而是让数据库为您设置。(如果多个用户同时插入记录,可能会出现重复密钥问题)

最后,没有指定参数的类型,因此它们与基础datatable架构不匹配。您可以使用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))

向表中添加新记录的正确语法应为

 Dim SqlQuery As String = "INSERT INTO presence(id_presence,id,hours,date) " & _
                          "VALUES (@Id_presence,@Id,@Hours,@Date)"
当然,每个命令都应该执行,否则它只是一行无用的代码。
创建参数后,您将缺少这一行

  SQLcmd.ExecuteNonQuery()
从您的图像无法确定,但如果idpresence是一个自动增量字段,则不应尝试使用命令和参数设置其值,而是让数据库为您设置。(如果多个用户同时插入记录,可能会出现重复密钥问题)

最后,没有指定参数的类型,因此它们与基础datatable架构不匹配。您可以使用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))

你想在这里复制一条现有记录吗?你想在这里复制一条现有记录吗?事实上,我的id_存在是自动递增的。非常感谢,你是vb和mySQL的上帝。事实上,我的id_存在是自动递增的。非常感谢,你是vb&mySQL的上帝。