2014-12-20 2 views
0

Я хотел обновить вычет акций до sql через vb, он не показывает ошибку, но он не будет обновлять. я желаю music_copies в SQL получил обновленный с новым результатом txtstock.text - txtquan.txt однако шоу успешно купить, но когда я обновить данные, он показывает то же самое, что и предыдущийupdate deduction to sql vb does not work

Private Sub btnwalkinadd_Click(sender As Object, e As EventArgs) Handles btnwalkinadd.Click 
    Dim con As New SqlConnection 
    Dim cmd As New SqlCommand 
    Dim rd As SqlDataReader 

    txtcal.Text = txtstock.Text - txtquan.Text 'This only for my reference 
    Try 

     If txtcal.Text >= 0 Then 
      con.ConnectionString = "Server=KAVIER;Database=vb;Trusted_Connection=True;" 
      con.Open() 
      cmd.Connection = con 

      Dim updatecmd As String = "UPDATE music SET music_copies = ' " & txtstock.Text - txtquan.Text & "' WHERE mus_id = '" & txtid.Text & "'" 

      updatecmd = cmd.ExecuteNonQuery() 'execute the command 

      MsgBox("Successfully Purchased") 
      con.Close() 
      Else 
       MsgBox("Insufficient Stock") 
      End If 

      txttotal.Clear() 
      txtartist.Clear() 
      txtprice.Clear() 
      txtid.Clear() 
      txtgenre.Clear() 
      txtalbum.Clear() 
      txtcal.Clear() 
      txtstock.Clear() 


    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 
End Sub 
+0

Прошу прощения, но ваш код ** упакован ** с недостатками. Для соединения требуется строка подключения. Команде требуется соединение и текст команды. Соединение, команда и читатель должны быть удалены в конце. Вы никогда не пользуетесь читателем. Ваш запрос открыт для SQL-инъекции. Вам нужно включить опцию strict on. –

+1

ok ... мне удалось добавить в то, что вы упомянули, и, наконец, он работает =) thanks =) – user3224361

ответ

0

использовать этот код.

Private Sub btnwalkinadd_Click(sender As Object, e As EventArgs) Handles btnwalkinadd.Click 
    Dim con As New SqlConnection 
    Dim cmd As New SqlCommand 
    Dim rd As SqlDataReader 

    txtcal.Text = txtstock.Text - txtquan.Text 'This only for my reference 
    Try 

     If txtcal.Text >= 0 Then 
      con.ConnectionString = "Server=KAVIER;Database=vb;Trusted_Connection=True;" 
      con.Open() 
      cmd.Connection = con 

      cmd.commandtext = "UPDATE music SET music_copies = ' " & txtstock.Text - txtquan.Text & "' WHERE mus_id = '" & txtid.Text & "'" 

      cmd.ExecuteNonQuery() 'execute the command 

      MsgBox("Successfully Purchased") 
      con.Close() 
      Else 
       MsgBox("Insufficient Stock") 
      End If 

      txttotal.Clear() 
      txtartist.Clear() 
      txtprice.Clear() 
      txtid.Clear() 
      txtgenre.Clear() 
      txtalbum.Clear() 
      txtcal.Clear() 
      txtstock.Clear() 


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

это была проблема с командой text.you дал команду текст updatecmd и определил его как строку, но выполняется SQL commadn CMD, который не имеет текст команды, чтобы быть executed.you должен инициализировать вводе команды должны быть выполнены как командный текст.

+0

thanks =))) Мне удалось исправить это с комментарием выше – user3224361