2013-09-04 2 views
-1

Что не так с этим?Я не могу обновить мою базу данных

Мой модуль:

Imports System.Data.OleDb 
Module Module1 
    Public con As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\CITeval\system7\system7\evaluation.mdb") 
    Public da As OleDbDataAdapter 
    Public dr As OleDbDataReader 
    Public cmd As OleDbCommand 
    Public ds = New DataSet 
    Public CurrentRow As Integer 
    Public sql As String 
End Module 

обновление БТН

Try 
    Dim Str As String 
    Str = "update studentsrecord set IDNumber=" 
    Str += """" & txtIDNumber.Text & """" 
    Str += " where IDNumber=" 
    Str += txtIDNumber.Text.Trim() 
    con.Open() 
    cmd = New OleDbCommand(Str, con) 
    cmd.ExecuteNonQuery() 
    con.Close() 
    con.Open() 
    Str = "update studentsrecord set FirstName=" 
    Str += """" & txtfirst.Text & """" 
    Str += " where IDNumber=" 
    Str += txtIDNumber.Text.Trim() 
    con.Open() 
    cmd = New OleDbCommand(Str, con) 
    cmd.ExecuteNonQuery() 
    con.Close() 
    con.Open() 
    Str = "update studentsrecord set LastName=" 
    Str += """" & txtlast.Text & """" 
    Str += " where IDNumber=" 
    Str += txtfirst.Text.Trim() 
    cmd = New OleDbCommand(Str, con) 
    cmd.ExecuteNonQuery() 
    con.Close() 
    con.Open() 
    Str = "UPDATE studentsrecord set Course=" 
    Str += """" & cbocourse.Text & """" 
    Str += " where IDNumber=" 
    Str += txtIDNumber.Text.Trim() 
    cmd = New OleDbCommand(Str, con) 
    cmd.ExecuteNonQuery() 
    con.Close() 
    con.Open() 
    Str = "update studentsrecord set Password=" 
    Str += """" & txtpassword.Text & """" 
    Str += " where IDNumber=" 
    Str += txtIDNumber.Text.Trim() 
    cmd = New OleDbCommand(Str, con) 
    cmd.ExecuteNonQuery() 
    con.Close() 
    ds.Clear() 
    da = New OleDbDataAdapter("SELECT * FROM studentsrecord ORDER BY ID", con) 
    da.Fill(ds, "evaluation") 
    MsgBox("Updated Successfully...") 
Catch ex As Exception 
    MsgBox(ex.Message & "," & ex.Source) 
Finally 
    If con.State = ConnectionState.Open Then con.Close() 
End Try 
+1

Для одного SQL использует одинарные кавычки, и вы добавляете двойников. – valverij

+0

база данных доступа я использую –

+0

А, ОК. Пожалуйста, добавьте тег Access к вопросу, чтобы избежать путаницы. – valverij

ответ

1

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

Попробуйте внутри вашего TRY/CATCH блока:

Dim Str As String 
Str = "update studentsrecord set FirstName = @FirstName, LastName = @LastName, Course = @Course, Password = @Password where IDNumber = @IDNumber " 
cmd = New OleDbCommand(Str, con) 
cmd.Parameters.AddWithValue("@FirstName", txtfirst.Text) 
cmd.Parameters.AddWithValue("@LastName", txtlast.Text) 
cmd.Parameters.AddWithValue("@Course", cbocourse.Text) 
cmd.Parameters.AddWithValue("@Password", txtpassword.Text) 
cmd.Parameters.AddWithValue("@IDNumber", txtIDNumber.Text.Trim()) 

con.Open() 
cmd.ExecuteNonQuery() 

ds.Clear() 
da = New OleDbDataAdapter("SELECT * FROM studentsrecord ORDER BY ID", con) 
da.Fill(ds, "evaluation") 

MsgBox("Updated Successfully...") 
+0

я попробовал код кода выше, и это дает мне это:. системы о ошибке UPDATE, Microsoft Jet Database Engine он говорит :( –

+0

Что –

+0

Системная ошибка: инструкция UPDATE. База данных Microsoft Jet Engine –