Я пытаюсь создать команду обновления в VB. Я смог создать его, и ошибка не отображается.не удалось обновить базу данных в mysql с помощью VB
но когда я пытаюсь выполнить команду во время отладки, обновление, похоже, не работает. Я не получаю никаких ошибок во время выполнения, но никаких изменений в моей базе данных не происходит.
вот мой code..it немного long..sorry для этого ..
connection = New MySqlConnection
connection.ConnectionString = "Database=ngp;data source=localhost; user id= root; password=********"
Dim reader As MySqlDataReader
If MsgBox("Are you sure about the CHANGES you made to " & Label33.Text & " ? " & vbNewLine & "May prob pa sa result ng yesno", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
Try
connection.Open()
Dim edit As String
edit = "update ngpmain set ID='" & TextBox21.Text & "',PENRO='" & ComboBox1.SelectedItem & "',CENRO='" & ComboBox2.SelectedItem & "',MUNICIPALITY_or_CITY='" & ComboBox3.SelectedItem & "',BARANGAY='" & TextBox1.Text & "',PROVINCE='" & TextBox2.Text & "',AREA='" & TextBox3.Text & "',SEEDS_PLANTED='" & TextBox4.Text & "',NAME_OF_ORG='" & TextBox5.Text & "',CONTACT_PERSON='" & TextBox6.Text & "',TYPE_OF_ORG='" & ComboBox4.SelectedItem & "',COMPONENT='" & ComboBox5.SelectedItem & "',COMMODITY='" & ComboBox10.SelectedItem & "',SPECIES='" & TextBox8.Text & "',YEAR='" & ComboBox6.SelectedItem & "',ZONE='" & ComboBox7.SelectedItem & "',TENURE='" & TextBox9.Text & "',NO_LOA='" & ComboBox8.SelectedItem & "',RIVER_BASIN='" & TextBox10.Text & "',WATERSHED='" & TextBox11.Text & "',REMARKS='" & TextBox12.Text & "',sid='" & TextBox13.Text & "',sid2='" & TextBox14.Text & "',YR_CD='" & TextBox15.Text & "', PSGC_CD='" & TextBox16.Text & "',SITE_ID='" & TextBox17.Text & "',AREA_CD='" & TextBox18.Text & "', MALE_PLANTER='" & TextBox19.Text & "',FEMALE_PLANTER='" & TextBox20.Text & "',TOTAL_PLANTERS='" & Label31.Text & "',UNIQUE_ID='" & Label33.Text & "',DISTRICT='" & ComboBox9.SelectedItem & "' where UNIQUE_ID='" & Label33.Text & "' "
command = New MySqlCommand(edit, connection)
reader = command.ExecuteReader
MsgBox("Changes were successfully applied.", MsgBoxStyle.Information)
Me.Show()
Catch ex As Exception
MsgBox(ex.Message)
Finally
connection.Dispose()
End Try
Else
MsgBox("No changes have been made.", MsgBoxStyle.Information)
Me.Show()
End If
вот мой новый код
Using connection As New MySqlConnection("Database=ngp;data source=localhost; user id= root; password=admin")
Using edit As New MySqlCommand
With edit
.Connection = connection
'ID='" & TextBox21.Text & "', UNIQUE_ID='" & Label33.Text & "',sid='" & TextBox13.Text & "',sid2='" & TextBox14.Text & "',SITE_ID='" & TextBox17.Text & "',AREA_CD='" & TextBox18.Text & "',
.CommandText = "update ngpmain set PENRO='" & ComboBox1.SelectedItem & "',CENRO='" & ComboBox2.SelectedItem & "',MUNICIPALITY_or_CITY='" & ComboBox3.SelectedItem & "',BARANGAY='" & TextBox1.Text & "',PROVINCE='" & TextBox2.Text & "',AREA='" & TextBox3.Text & "',SEEDS_PLANTED='" & TextBox4.Text & "',NAME_OF_ORG='" & TextBox5.Text & "',CONTACT_PERSON='" & TextBox6.Text & "',TYPE_OF_ORG='" & ComboBox4.SelectedItem & "',COMPONENT='" & ComboBox5.SelectedItem & "',COMMODITY='" & ComboBox10.SelectedItem & "',SPECIES='" & TextBox8.Text & "',YEAR='" & ComboBox6.SelectedItem & "',ZONE='" & ComboBox7.SelectedItem & "',TENURE='" & TextBox9.Text & "',NO_LOA='" & ComboBox8.SelectedItem & "',RIVER_BASIN='" & TextBox10.Text & "',WATERSHED='" & TextBox11.Text & "',REMARKS='" & TextBox12.Text & "',YR_CD='" & TextBox15.Text & "',PSGC_CD='" & TextBox16.Text & "',MALE_PLANTER='" & TextBox19.Text & "',FEMALE_PLANTER='" & TextBox20.Text & "',TOTAL_PLANTERS='" & Label31.Text & "',DISTRICT='" & ComboBox9.SelectedItem & "'"
.CommandType = CommandType.Text
.Parameters.AddWithValue("UNIQUE_ID", Label33.Text)
End With
Try
connection.Open()
edit.ExecuteNonQuery()
MsgBox("Changes were successfully applied.", MsgBoxStyle.Information)
Me.Show()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Using
End Using
Вы должны использовать параметризованные запросы для предотвращения атак SQL-инъекции. – Donal
@donal любая идея о том, как это сделать с моим кодом? .thanks – mrkdenz
Проблема, с которой вы сталкиваетесь, заключается в том, что вы должны использовать ExecuteNonQuery вместо ExecuteReader. Параметрированные запросы предназначены для наилучшей практики. – Donal