Проблема загрузки базы данных access в datagridview VB
Здравствуйте Специалисты,
Я только начинаю с программирования VB для самообучения, я пытаюсь загрузить базу данных access в представление таблицы данных, я не хочу использовать SQL для этого небольшого проекта, я хотел бы просто читать и записывать данные в этот конкретный файл access.
У меня возникла проблема, что я хочу загрузить таблицу доступа в сетку данных, чтобы иметь возможность обновить ее, но по какой-то причине она никогда не загружается, и я получил ошибку. ""ссылка на объект не установлена на экземпляр объекта"
Что я уже пробовал:
код.
Imports System.Data.OleDb Public Class Edit Dim cmd As OleDbCommand Dim sql As String Dim dr As OleDbDataReader Public Sub Load() End Sub Private Sub Edit_Load(sender As Object, e As EventArgs) Handles MyBase.Load Load() End Sub Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick Try conB() sql = "select * from record where ID = ?" cmd = New OleDbCommand(sql, conn) cmd.Parameters.AddWithValue("ID", DataGridView1.CurrentRow.Cells(0).Value.ToString()) dr = cmd.ExecuteReader() If (dr.Read) Then txtID.Text = dr(0).ToString() txtPartNumber.Text = dr(1).ToString() txtPartDescription.Text = dr(2).ToString() txtPartLocation.Text = dr(3).ToString() txtPartOnHand.Text = dr(4).ToString() End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Try Dim ID, PartNumber, PartDescription, PartLocation, PartsOnHand As String ID = txtID.Text PartNumber = txtPartNumber.Text PartDescription = txtPartDescription.Text PartLocation = txtPartLocation.Text PartsOnHand = txtPartOnHand.Text sql = "update record set PartNumber=?, PartDescription=?, Partocation=?, PartsOnHand=? where ID=?" conB() cmd = New OleDbCommand(sql, conn) cmd.Parameters.AddWithValue("ID", ID) cmd.Parameters.AddWithValue("PartNumber", PartNumber) cmd.Parameters.AddWithValue("PartDescription", PartDescription) cmd.Parameters.AddWithValue("PartLocation", PartLocation) cmd.Parameters.AddWithValue("PartsOnHand", PartsOnHand) cmd.ExecuteNonQuery() MessageBox.Show("updated added") load() txtPartNumber.Clear() txtPartDescription.Clear() txtPartLocation.Clear() txtPartOnHand.Clear() txtPartNumber.Focus() conn.Close() Catch ex As Exception MessageBox.Show("Fail") End Try End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click, Button3.Click Try Dim ID As String ID = txtID.Text sql = "delete from records where ID=?" conB() cmd = New OleDbCommand(sql, conn) cmd.Parameters.AddWithValue("ID", ID) cmd.ExecuteNonQuery() MessageBox.Show("Record deleted") load() txtPartNumber.Clear() txtPartDescription.Clear() txtPartLocation.Clear() txtPartOnHand.Clear() txtPartNumber.Focus() conn.Close() Catch ex As Exception MessageBox.Show("Fail") End Try End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click Me.Hide() End Sub End Class
Richard Deeming
Не храните соединения, команды или средства чтения данных в полях уровня класса. Создайте их как локальные переменные в ваших методах, когда они потребуются, и оберните их в Using
блок.
Ваш cmd
, sql
, и dr
вместо этого все поля должны быть локальными переменными.