2016-06-14 2 views
-1

Мой код теперь это, как я забыл добавить подключение к моей базе данных после того, как я обновил таблицу, по-прежнему не работает, хотяVisual Basic данные достаньте из выпадающего списка

Private Sub cmdRegistar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdRegistar.Click 
    myConnToAccess = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source = 'D:\PAP\LoginForm\LoginForm\bin\debug\login.mdb'") 
    myConnToAccess.Open() 
    Try 
     Dim x As String 
     Dim str As String 
     x = ComboBox1.Text 
     str = "UPDATE UserTable set Password = '" & txtPass.Text & "' where Username = '" & x & "'" 
     Dim cmd As OleDbCommand = New OleDbCommand(str, myConnToAccess) 
     myConnToAccess.Close() 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 
End Sub 

Так как вы можете увидеть код не имеет никаких ошибок, он компилируется и работает просто отлично, он просто не работает, значения combobox исходят из одной базы данных того, что я пытаюсь сделать с обновлением команды. Все мои дружеские отношения работают очень хорошо, мое добавление, поиск.

+2

Paste ваш код как текст в вашем вопросе и оберните его в теги кода. Объясните, что вы пытаетесь сделать, и почему вы считаете, что он не работает. Вы получили сообщение об ошибке? Мое первое предположение заключается в том, что вы пытаетесь запустить запрос, но вы закрываете соединение, прежде чем что-либо делать с SQL. – dbmitch

+0

моя база данных находится в доступе (2010). Я пытаюсь заменить значение в базе данных, которая поступает из текстового поля , нет, никаких сообщений об ошибках –

+2

Пожалуйста, верните свой вопрос, чтобы удалить тег VBA. –

ответ

0

Когда вы в действительности получаете str в своей базе данных? Разве у вас нет что-то вроде str.Execute или что-то там? Помимо этого, у вас есть ошибка в этой строке:

str = "UPDATE UserTable set Password" & txtPass.text & "where Username= '" & x & "'" 

Оно должно быть:

str = "UPDATE UserTable set Password = '" & txtPass.text & "' where Username = '" & x & "'" 
+0

Извините, если это глупый вопрос, но есть не способ сделать параметризованный запрос и позволить движку db иметь дело с цитированием и параметром valeus? Я нахожу это довольно озадачивающим, что можно было бы объединить вход пользователя так, как если бы SQL-инъекция никогда не существовала. [** Must-read XKCD **] (https://xkcd.com/327/) –

+0

yes, эта строка Dim cmd Как OleDbCommand = Новый OleDbCommand (str, myConnToAccess) [myConnToAccess = New OleDbConnection], но все еще не работает –

+0

Мат - Возможно, но я ничего не помню о VB. В C# вы определенно будете использовать параметры. Жоао. Эта линия, кажется, отсутствует на вашем посту, если я не ошибаюсь? –

0

Password является зарезервированным словом, так попробуйте это:

str = "UPDATE UserTable set [Password] = '" & txtPass.Text & "' where Username = '" & x & "'" 
Смежные вопросы