簡體   English   中英

Visual Basic .NET Access數據庫記錄添加

[英]Visual Basic .NET Access Database Record Add

我有數據庫保存更改的問題:

    coon1.ConnectionString = _
    "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & _
    "magazyn.mdb"
     sql = "INSERT INTO magazyn   (ID_Towaru,Kod_Towaru,Nazwa_Towaru,Ilość_w_magazynie,ilość_minimalna,ALERT) VALUES ('" & jakiid & "','" & kodtowaru & "','" & nazwatowaru & "','" & iloscwmagazynie & "','" & iloscminimalna & "',0)"


    Dim MyConnection As New OleDbConnection(conn)
    Dim command1 As New OleDbCommand(sql, MyConnection)

    command1.Connection.Open()
    command1.ExecuteNonQuery()
    MyConnection.Close()

我嘗試將新記錄添加到表magazyn ,但是當使用Access打開數據庫時,我沒有在表中看到任何與magazyn相關的新記錄。 ViewGrid向我展示了這個新元素,直到我關閉並重新打開程序。

有人知道問題在哪里嗎?

始終使用參數而不是字符串連接。 應遵循此規則

sql = "INSERT INTO magazyn  " + 
       "(Kod_Towaru,Nazwa_Towaru,Ilość_w_magazynie,ilość_minimalna,ALERT) " + 
       "VALUES (?, ?, ?, ?,0)"
Using MyConnection As New OleDbConnection(conn)
Using command1 As New OleDbCommand(sql, MyConnection)
    command1.Connection.Open()
    command1.Parameters.AddWithValue("@Kod", kodtowaru)
    command1.Parameters.AddWithValue("@naz", nazwatowaru)
    command1.Parameters.AddWithValue("@ilo", iloscwmagazynie)
    command1.Parameters.AddWithValue("@mini", iloscminimalna)
    command1.ExecuteNonQuery()
End Using
End Using

當然,這要求用作參數值的變量具有正確的數據類型。

請在模塊中插入以下編碼。

Imports System.Data.OleDb Module Module1

Public OleCn As New OleDbConnection()

Public Function StrConnection() As String

    StrConnection = "Provider=Microsoft.Ace.Oledb.12.0; Data Source=" & My.Application.Info.DirectoryPath.ToString() & "\BackUp\Testing.Accdb;"

    Return StrConnection
End Function

之后在保存按鈕中插入下面的編碼。

Dim msg As DialogResult = MessageBox.Show(“你要保存此記錄嗎?”,“響應”,MessageBoxButtons.YesNo,MessageBoxIcon.Question)

    If (msg = vbYes) Then

        If RequiredEntry() = True Then
            Return
        End If

        Try
            With OleCn
                If .State <> ConnectionState.Open Then
                    .ConnectionString = StrConnection()
                    .Open()
                End If
            End With
        Catch ex As Exception
            MessageBox.Show(ex.Message, "Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try

        Try

            Dim sSQL As String = "insert into Vendor values(@VendorCode,@VendorName,@Address,@City,@LandPhone,@Mobile,@EmailID,@Balance)"

            Dim cmd As OleDbCommand = New OleDbCommand(sSQL, OleCn)

            'VendorCode
            Dim VendorCode As OleDbParameter = New OleDbParameter("@VendorCode", OleDbType.VarChar, 10)
            VendorCode.Value = txtVendorCode.Text.ToString()
            cmd.Parameters.Add(VendorCode)

            'VendorName
            Dim VendorName As OleDbParameter = New OleDbParameter("@VendorName", OleDbType.VarChar, 25)
            VendorName.Value = txtVendorName.Text.ToString()
            cmd.Parameters.Add(VendorName)

            'Address
            Dim Address As OleDbParameter = New OleDbParameter("@Address", OleDbType.VarChar, 50)
            Address.Value = txtAddress.Text.ToString()
            cmd.Parameters.Add(Address)

            'City
            Dim City As OleDbParameter = New OleDbParameter("@City", OleDbType.VarChar, 25)
            City.Value = txtCity.Text.ToString()
            cmd.Parameters.Add(City)

            'LandPhone
            Dim LandPhone As OleDbParameter = New OleDbParameter("@LandPhone", OleDbType.VarChar, 50)
            LandPhone.Value = txtLandPhone.Text.ToString()
            cmd.Parameters.Add(LandPhone)


            'Mobile
            Dim Mobile As OleDbParameter = New OleDbParameter("@Mobile", OleDbType.VarChar, 15)
            Mobile.Value = txtMobile.Text.ToString()
            cmd.Parameters.Add(Mobile)

            'EmailID
            Dim EmailID As OleDbParameter = New OleDbParameter("@EmailID", OleDbType.VarWChar, 25)
            EmailID.Value = txtEmailID.Text.ToString()
            cmd.Parameters.Add(EmailID)


            'Balance
            Dim Balance As OleDbParameter = New OleDbParameter("@Balance", OleDbType.VarWChar, 10)
            Balance.Value = txtBalance.Text.ToString()
            cmd.Parameters.Add(Balance)

            If cmd.ExecuteNonQuery() Then

                OleCn.Close()
                MessageBox.Show("New Record is Added Successfully.", "Record Saved")
                Call clear()

            Else

                MsgBox("Record Addition Failed ", MsgBoxStyle.Critical, "Addition Failed")

                Return
            End If

        Catch ex As Exception
            MessageBox.Show(ex.Message.ToString(), "Data Error")
            Exit Sub
        End Try
    End If 

暫無
暫無

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

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