我试图用VB插入数据库上的数据

时间:2017-06-21 20:28:08

标签: vb.net oledbcommand

我正在尝试使用带有migrate的Visual Basic在访问数据库中插入数据,但它一直给我这个错误:

Error

这是我的代码:

OleDbCommand

2 个答案:

答案 0 :(得分:2)

首先,我建议您认真考虑使用参数。如您所见,如果您使用参数,则不会出现语法错误。正如史蒂夫指出的那样,这也将消除像奥哈拉或奥凯利这样名字的问题。

其次它还可以保护您免受SQL注入攻击 - 请参阅Bobby Tables

最后,在使用数据库连接时,实现一个使用块是很好的做法,以防忘记关闭连接,它将在使用块的末尾处理掉。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Using con As New OleDb.OleDbConnection

      con.ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0;" & _
                             "Data Source = database path here" 
      con.Open()

      Dim sql As String = "INSERT INTO Atletas (Nome, Contacto, Email, dataNascimento, Morada, idEscalao) VALUES (@nome, @contacto, @email, @datanascimento, @morada, @idescalao);"

      Dim sql_insert As New OleDbCommand

      With sql_insert
          .Parameters.AddWithValue("@nome", Text_Nome.Text)
          .Parameters.AddWithValue("@contacto", Text_Contacto.Text)
          .Parameters.AddWithValue("@email", Text_Email.Text)
          .Parameters.AddWithValue("@datanascimento", Data_Picker.Value.ToString("yyyy/MM/dd")) '''Assuming the value needed is a date only
          .Parameters.AddWithValue("@morada", Text_Morada.Text)
          .Parameters.AddWithValue("@idescalao", Cstr(Combo_Escalao.Tag))
          .CommandText = sql
          .Connection = con
          .ExecuteNonQuery()         
      End With

      con.close()

   End Using

End Sub

答案 1 :(得分:1)

你缺少两个撇号,一个在开头,另一个在最后。用分号结束它也是一种很好的做法。试试这个:

sql = "INSERT INTO Atletas ( Nome, Contacto, Email, dataNascimento, Morada, idEscalao ) VALUES( '" & Text_Nome.Text & "','" & Text_Contacto.Text & "','" & Text_Email.Text & "','" & Data_Picker.Text & "','" & Text_Morada.Text & "','" & Combo_Escalao.Tag & "');"

然而,正如Plutonix在他的评论中所建议的那样:不要连接字符串来制作SQL。 Use SQL parameters