簡體   English   中英

使用Visual Studio 2015更新Access數據庫-VB.net

[英]Update Access database using Visual Studio 2015 - VB.net

我正在嘗試對Access 2016數據庫進行簡單更新。 我正在使用Visual Studio / VB.net。 我已經能夠使用相同類型的編碼以不同的形式進行此操作,而且沒有任何問題(這很基本,這是用於學校項目的,但現在不再可用)。 我嘗試了兩種不同的方法來執行此操作...例如,使用更新表適配器:

            MediatorsListTableAdapter.UpdateMediators(MediatorIDTextBox.Text, MediatorNameTextBox.Text, MaskedTextBox1.Text, MaskedTextBox2.Text, DateTimePicker1.Value,
            AvailabilityTextBox.Text, EmailTextBox.Text)

使用該方法,即使我在其他地方使用了類似類型的適配器,也總是會拋出notImplemented異常。 我也嘗試使用串連方法(我知道,不理想):

saveInfo = "UPDATE mediatorsList(mediatorName, email, mediatorPrimaryPhone, mediatorSecondaryPhone, lastMediationDate, availability)
              VALUES('" & MediatorNameTextBox.Text & "','" & EmailTextBox.Text & "','" & MaskedTextBox1.Text & "','" & MaskedTextBox2.Text & "',
            '" & DateTimePicker1.Value & "','" & AvailabilityTextBox.Text & "', WHERE mediatorID = '" & MediatorIDTextBox.Text & "') "

但是這種方法給了我UPDATE語句語法錯誤的錯誤 我再次在其他地方使用了此方法,沒有任何問題。 下面,我將發布此表單的所有代碼。

Imports System.Data
Imports System.Data.Odbc ' Import ODBC class
Imports System.Data.OleDb
Imports System.Data.SqlClient

Public Class editMediators

Dim NewData As Boolean
Dim objConnection As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\ECRDatabase.accdb")


' create functions for save or update 
Private Sub runAccessSQL(ByVal sql As String)
    Dim cmd As New OleDbCommand
    connect() ' open our connection
    Try
        cmd.Connection = conn
        cmd.CommandType = CommandType.Text
        cmd.CommandText = sql
        cmd.ExecuteNonQuery()
        cmd.Dispose()
        conn.Close()
        MsgBox("Data Has Been Saved !", vbInformation)
    Catch ex As Exception
        MsgBox("Error when saving data: " & ex.Message)
    End Try
End Sub

Private Sub editMediators_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    Me.MediatorsListTableAdapter.Fill(Me.ECRDatabaseDataSet.mediatorsList) 'loads current mediator information
    DateTimePicker1.Value = Today()

End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 'update button
    NewData = True
    alertMsgBox2()

End Sub

Private Sub alertMsgBox2()

    Select Case MsgBox("Yes: Saves Changes," & vbNewLine &
           "No: Exits the mediator update window without saving," & vbNewLine &
           "Cancel: Returns to the mediator update window.", MsgBoxStyle.YesNoCancel, "Update Mediator Information")
        Case MsgBoxResult.Yes

            MediatorsListBindingSource.EndEdit()
            updateMediator()

         'intentionally commented out                
         'MediatorsListTableAdapter.UpdateMediators(MediatorIDTextBox.Text,    MediatorNameTextBox.Text, MaskedTextBox1.Text, MaskedTextBox2.Text, DateTimePicker1.Value,
            'AvailabilityTextBox.Text, EmailTextBox.Text)

           ' Me.Close()

        Case MsgBoxResult.No
            MediatorsListBindingSource.CancelEdit()
            Me.Close()
    End Select

End Sub

Private Sub updateMediator()
    Dim saveInfo As String
    If NewData Then
        Dim Message = MsgBox("Are you sure you want to update mediator information? ", vbYesNo + vbInformation, "Information")
        If Message = vbNo Then
            Exit Sub
        End If
        Try
            'Update mediator information
            saveInfo = "UPDATE mediatorsList(mediatorName, email, mediatorPrimaryPhone, mediatorSecondaryPhone, lastMediationDate, availability)
              VALUES('" & MediatorNameTextBox.Text & "','" & EmailTextBox.Text & "','" & MaskedTextBox1.Text & "','" & MaskedTextBox2.Text & "',
            '" & DateTimePicker1.Value & "','" & AvailabilityTextBox.Text & "', WHERE mediatorID = '" & MediatorIDTextBox.Text & "') "
        Catch ex As Exception
        End Try

    Else
        Exit Sub

    End If
    runAccessSQL(saveInfo)

End Sub

盡管我不確定代碼中是否缺少某些東西,但是顯然我缺少了一些東西。 我檢查了數據庫字段,並將它們設置為字符串/文本字段,以查看是否可以正常運行。 一次,我將兩個2電話號碼字段設置為錯誤的數據類型,因此您只能按照int32要求輸入一個數字。 實際上,幾個月前,我有一種方法正在工作/更新數據庫,但是我不知道此后發生了什么。 我確實知道Visual Studio給了我一些可能引起問題的問題,但是記住發生的事情已經太久了。

我很迷失其他嘗試方法,因為這似乎應該以一種或另一種方式起作用。 有什么想法要看和/或嘗試嗎? 希望我能指出正確的方向。

謝謝 :)

您的更新語句不正確,WHERE子句位於VALUES()段內,應該在它之后。

嘗試以下操作:(已編輯)

saveInfo = "UPDATE mediatorsList SET mediatorName='" & _
    MediatorNameTextBox.Text & "', email='" & EmailTextBox.Text & "', .... WHERE " & _
    mediatorID = '" & MediatorIDTextBox.Text & "'"

另外,請務必正確處理日期。 我通常會強制采用yyyy / mmm / dd格式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM