Visual Basic .NET Access Database Record Add

孤街醉人 提交于 2021-01-29 12:15:50

问题


I have problem with database save changes:

    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()

I try add new record to table magazyn, but when opened database with Access then I didn't see any new record related to magazyn in the table. But ViewGrid shows me this new element until I close and re-open the program.

Does someone know where the problem is?


回答1:


Always use parameters and not string concatenation. This rule should be followed categorically

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

This, of course, requires that the variables used as value for the parameters are of the correct datatype.




回答2:


Please Insert This Below Coding in Module.

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

After This Insert the Below Coding in Save Button.

Dim msg As DialogResult = MessageBox.Show("Do you want to Save this Record? ", "Response", 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 


来源:https://stackoverflow.com/questions/13377507/visual-basic-net-access-database-record-add

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!