2012-11-08 4 views
0

나는 프로그램을 만든vb.net 업데이트 데이터

난에 이름 '산 Fransio'을 변경하는 등

문제는 '스티브' 내가 다시 페이지로 다음 페이지로 이동하는 경우 나는 방금 을 편집했고 이름은 여전히 ​​'San Fransio' 을 표시했지만 프로그램을 닫은 후 다시 닫으면 'Steve'로만 업데이트되었습니다.
데이터를 닫지 않고 업데이트하고 새로 고치는 방법이 있습니까?
새로 고침 데이터 코드 등을 추가해야합니까?

Public Class Form2 
    Dim cnn As New OleDb.OleDbConnection 
    Dim sql As String = "SELECT * FROM sr" 
    Dim ds As New DataSet 
    Dim da As OleDb.OleDbDataAdapter 
    Dim i As Integer 
    Dim len As Integer 
    Dim ind As Integer = 0 
    Dim arrNumbers() As String 
    Dim no As Integer 



    Private Sub btnSrch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSrch.Click 
     Dim sql1 = InputBox("Service Number :", "Search", " ") 
     Dim no As Integer 
     Dim found As Boolean = False 

     For no = 0 To len - 1 
      If ds.Tables("db").Rows(no).Item(0).ToString.ToLower = sql1.ToString.ToLower Then 
       i = (no) 
       nav() 
       found = True 

      End If 

     Next 
     If (found = False) Then 
      MsgBox("Search Not Found") 
     End If 
    End Sub 

    Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
     cnn = New OleDb.OleDbConnection 
     cnn.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0; Data Source=C:\Users\Lim\Documents\db.mdb" 
     da = New OleDb.OleDbDataAdapter(sql, cnn) 
     da.Fill(ds, "db") 
     len = da.Fill(ds, "db") 

     i = len - 1 
     nav() 

    End Sub 
    Private Sub nav() 
     txtsr.Text = ds.Tables("db").Rows(i).Item(0) 
     txtname.Text = ds.Tables("db").Rows(i).Item(1) 
     txttel.Text = ds.Tables("db").Rows(i).Item(2) 
     txtdate.Text = ds.Tables("db").Rows(i).Item(3) 
     txtprob.Text = ds.Tables("db").Rows(i).Item(4) 
     txtmodel.Text = ds.Tables("db").Rows(i).Item(5) 
     txtacc.Text = ds.Tables("db").Rows(i).Item(6) 
    End Sub 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
     If (i = 0) Then 
      MsgBox("This is the first page") 
     Else 
      i = i - 1 
      nav() 

     End If 
    End Sub 

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 
     If (i = len - 1) Then 
      MsgBox("This is the last page") 
     Else 
      i = i + 1 
      nav() 
     End If 
    End Sub 



    Private Sub btn2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn2.Click 
     Dim cnn As New OleDb.OleDbConnection 
     Dim cmd As New OleDb.OleDbCommand 
     cnn.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0; Data Source=C:\Users\Lim\Documents\db.mdb" 
     cnn.Open() 

     Dim sqlstr = "UPDATE sr set cname='" & txtname.Text & "',tel='" & txttel.Text & "',cdate='" & txtdate.Text & "',prob='" & txtprob.Text & "',model='" & txtacc.Text & "'WHERE SR=" & txtsr.Text & "" 

     cmd = New OleDb.OleDbCommand(sqlstr, cnn) 
     cmd.ExecuteNonQuery() 

     cnn.Close() 


    End Sub 

End Class 
+1

당신은 여기에 다른 사용자 이름에서이 질문을했다 : http://stackoverflow.com/questions/13286179/something-wrong-with-update-data-from-vb-to-database –

답변

1

위의 코드에서 많은 문제가 발생합니다.

  • 당신은 당신이 당신의 테이블을 업데이트 할 OleDbDataAdapter.UpdateCommand를 사용하지 않는 당신이 그 (것)들을
  • 당신은 당신의 업데이트 쿼리
  • 매개 변수를 사용하지 않는 열 때 연결을 닫지 마십시오

Using cnn = New OleDb.OleDbConnection 
     ..... 
    End Using 

사용 매개 변수

와의 연결을 닫습니다
Dim sqlstr = "UPDATE sr set cname=?,tel=?,cdate=?,prob=?,model=? WHERE SR=?" 
da.UpdateCommand = new OleDbCommand(sqlstr, cnn) 
da.UpdateCommand.AddWithValue("@cName", txtname.Text) 
da.UpdateCommand.AddWithValue("@tel", txttel.Text) 

' and so on but remember to follow exactly the order in which they are expected 
+0

감사합니다, 나는 것 그것을 시도해보십시오, 정말 고맙습니다. – user1808823