Как обновить табличные значения базы данных SQL.
Ну, я пытаюсь обновить свои значения базы данных SQL и выдает некоторую ошибку. У меня есть form1, в котором есть ComboBox1.Text, который помогает автоматически заполнять мои поля form2. Но когда я пытаюсь сохранить что-нибудь оттуда с помощью MODIFY_BUtton, он говорит:
Неправильный синтаксис около ключевого слова 'не'.
Пожалуйста, поправь меня, пока я не сошел с ума.
Что я уже пробовал:
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click connection = New SqlConnection("SERVER=\MySQLserver;USER ID=MyID;PASSWORD=MyPASS;DATABASE=MyDATABASE") Dim reader As SqlDataReader Try connection.Open() Dim nDate As Date = Date.Now.ToString(" yyyy-MM-dd") Dim query As String = "UPDATE faculty SET id='" & TextBox1.Text & "',dept='" & ComboBox1.Text & "',sub='" & ComboBox2.Text & "',pre='" & ComboBox3.Text & "',name='" & TextBox2.Text & "',dob='" & DateTimePicker1.Value & "',sex='" & ComboBox4.Text & "',addr='" & TextBox3.Text & "',city='" & TextBox4.Text & "',state='" & TextBox5.Text & "',pin='" & TextBox6.Text & "',country='" & TextBox7.Text & "',nat='" & TextBox8.Text & "',mob='" & TextBox9.Text & "',email='" & TextBox10.Text & "',uname='" & TextBox11.Text & "',pword='" & TextBox12.Text & "',sec='" & ComboBox5.Text & "',ans='" & TextBox14.Text & "',mod='" & nDate & "' where id='" & TextBox1.Text & "'" command = New SqlCommand(query, connection) reader = command.ExecuteReader MsgBox("Record Updated") Me.Close() connection.Close() load_dgv() Catch ex As Exception MsgBox(ex.Message) Finally connection.Dispose() End Try End Sub
Bryian Tan
Откуда взялось это "откуда"? Я не вижу этого в опубликованном коде.
Babai JermenKeller Sasmal
Совершенно верно, даже я не знаю, откуда взялось это "от". Я пересмотрел свой код более 10 раз, изменил все, но все равно не повезло. Можете ли вы повторно исправить код, для меня будет решетка полная. Я провел небольшое исследование по поводу этой ошибки. Некоторые из них говорят, что в sql-запросе есть несколько "запятых", но до сих пор не нашли ничего подобного.
Richard Deeming
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Const query As String = "UPDATE faculty SET dept = @dept, sub= @sub, pre = @pre, name = @name, dob = @dob, sex = @sex, addr = @addr, city = @city, state = @state, pin = @pin, country = @country, nat = @nat, mob = @mob, email = @email, uname = @uname, pword = @pword, sec = @sec, ans = @ans, mod = @mod where id = @id" Using command As New SqlQuery(query, connection) command.Parameters.AddWithValue("@dept", ComboBox1.Text) command.Parameters.AddWithValue("@sub", ComboBox2.Text) command.Parameters.AddWithValue("@pre", ComboBox3.Text) command.Parameters.AddWithValue("@name", TextBox2.Text command.Parameters.AddWithValue("@dob", DateTimePicker1.Value) command.Parameters.AddWithValue("@sex", ComboBox4.Text) command.Parameters.AddWithValue("@addr", TextBox3.Text) command.Parameters.AddWithValue("@city", TextBox4.Text) command.Parameters.AddWithValue("@state", TextBox5.Text) command.Parameters.AddWithValue("@pin", TextBox6.Text) command.Parameters.AddWithValue("@country", TextBox7.Text) command.Parameters.AddWithValue("@nat", TextBox8.Text) command.Parameters.AddWithValue("@mob", TextBox9.Text) command.Parameters.AddWithValue("@email", TextBox10.Text) command.Parameters.AddWithValue("@uname", TextBox11.Text) command.Parameters.AddWithValue("@pword", TextBox12.Text) command.Parameters.AddWithValue("@sec", ComboBox5.Text) command.Parameters.AddWithValue("@ans", TextBox14.Text) command.Parameters.AddWithValue("@mod", nDate) command.Parameters.AddWithValue("@id", TextBox1.Text) ... End Using
Richard Deeming
Теперь вам нужно прочитать о том, как пароли должны храниться:
Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хэширование паролей - делаем это правильно[^]
Richard Deeming
И сделайте себе одолжение, и дайте вашим элементам управления значимые имена. Может быть ты помнишь что TextBox42
содержит сейчас но когда вы вернетесь к своему коду через шесть месяцев, вы будете проклинать человека, который его написал.
Richard Deeming
Да, и не используйте его. ExecuteReader
с UPDATE
, INSERT
или DELETE
команда. Они не возвращают никаких строк, так что читать нечего. Воспользуйся ExecuteNonQuery
вместо.