2014-02-06 13 views
-1

У меня есть этот код, но когда я пытаюсь выполнить его, я всегда получаю окно с сообщением Syntax error in INSERT statement Я не знаю, что случилось. Кто-нибудь может мне помочь? Я новичокВставить данные в базу данных

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

     If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Then 
      MsgBox("some fields are empty ") 
      Exit Sub 
     ElseIf TextBox2.Text <> TextBox3.Text Then 
      MsgBox("password do not match ") 
      Exit Sub 
     Else 
      ans = MsgBox(" are you want to ADD this user? ", MsgBoxStyle.YesNo, 
        "confirm ") 
      If ans = MsgBoxResult.Yes Then 
       Try 
        Dim SqlQuery = "INSERT INTO login (user,pass) VALUES _ 
         ('" & TextBox1.Text & "','" & TextBox2.Text & "')" 
        Dim sqlcommand As New OleDbCommand 
        With sqlcommand 
         .CommandText = SqlQuery 
         .Connection = conn 
         .ExecuteNonQuery() 
        End With 
        MsgBox("User Succesfully added", MsgBoxStyle.Information) 
        TextBox1.Text = "" 
        TextBox2.Text = "" 
        TextBox3.Text = "" 

       Catch ex As Exception 
        MsgBox(ex.Message) 
       End Try 
      Else 
       Exit Sub 
      End If 

     End If 

    End Sub 
+1

где объект соединения определен? –

+0

Что вы имеете в виду? im realy a newbee .. – user3242798

+0

Где вы подключаетесь, объект определен и открыт ли он? –

ответ

2

Помимо других проблем, которые вы будете из-за лицо (смотреть параметризованные запросы), вы сцепляетесь ваша строка неправильно.

Изменить

Dim SqlQuery = "INSERT INTO login (user,pass) VALUES _ 
        ('" & TextBox1.Text & "','" & TextBox2.Text & "')" 

To:

Dim SqlQuery = "INSERT INTO login (user,pass) VALUES " & _ 
        "('" & TextBox1.Text & "','" & TextBox2.Text & "')" 
+0

sir im все еще получает ошибку – user3242798

+0

Такое же сообщение об ошибке синтаксиса? – Tom

+0

yes sir .. То же сообщение об ошибке синтаксиса – user3242798

5

Предположив, что вы используете MS-Access, то слово USER является зарезервированным ключевым словом, вам нужно оформить его в квадратных скобках

Но давайте попробуем использовать параметризованный запрос, чтобы решить проблему с sql-инъекцией и одинарные кавычки в пароле или имени пользователя

Dim SqlQuery = "INSERT INTO login ([user],pass) VALUES (?,?)" 
Dim sqlcommand As New OleDbCommand 
With sqlcommand 
    .CommandText = SqlQuery 
    .Connection = conn 
    .Parameters.AddWithValue("@p1",TextBox1.Text) 
    .Parameters.AddWithValue("@p2",TextBox2.Text) 
    .ExecuteNonQuery() 
End With 

A? заполнители будут заменены фактическим значением параметров, определенных в коллекции параметров вашей команды. При использовании OleDb параметры не распознаются по их имени (отсюда анонимный заполнитель), но по их позиции. Это означает, что первый параметр в коллекции заменяет первый placeholder и т. Д. Кстати, структура знает, как правильно подготовить значение параметра строки (или даты или десятичного числа), помещая соответствующий разделитель цитат или десятичных знаков вокруг значение

+0

sir im все еще получает ошибку – user3242798

+0

Ошибка синтаксиса? Это странно. Вы уверены в именах столбцов и имени таблицы? – Steve

+0

im sure sure sir – user3242798

Смежные вопросы