Member 13689762 Ответов: 1

Поиск доступ к БД и отображение всех данных найденных в виде сетки VB.NET


Я хочу создать пользовательскую форму в VB NET, которая имеет одно текстовое поле, которое я могу поместить в строку в формате "AAA00 AA000(это в моей второй колонке) TO затем используйте кнопку для поиска базы данных access и возврата всех данных, относящихся к этому номеру, а также отображения в gridview в той же форме.

мои заголовки будут определяться первой строкой моей БД

Может ли кто-нибудь указать мне правильное направление, я сделал некоторое программирование в vb с excel, но это мой первый проект в vb через visual studio

Спасибо Иззи

Что я уже пробовал:

Imports System.Data.OleDb
Public Class Form1

    'Change "C:\Users\Jimmy\Documents\Merchandise.accdb" to your database location
    Dim connString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\IzzyM\Desktop\Engie\KKS\KKS Maintenance Tool.accdb"
    Dim MyConn As OleDbConnection
    Dim da As OleDbDataAdapter
    Dim ds As DataSet
    Dim tables As DataTableCollection
    Dim source1 As New BindingSource
    Dim provider As String
    Dim dataFile As String
    Public myConnection As OleDbConnection = New OleDbConnection
    Public dr As OleDbDataReader

    'Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    'MyConn = New OleDbConnection
    'MyConn.ConnectionString = connString
    'ds = New DataSet
    'tables = ds.Tables
    'da = New OleDbDataAdapter("Select * from [EWH INSTRUMENT KKS]", MyConn) 'Change items to your database name
    'da.Fill(ds, "items") 'Change items to your database name
    'Dim view As New DataView(tables(0))
    'source1.DataSource = view
    'DataGridView1.DataSource = view
    'End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim connstring As String
        provider = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source ="
        dataFile = "C:\Users\IzzyM\Desktop\Engie\KKS\KKS Maintenance Tool.accdb" ' Change it to your Access Database location
        connString = provider & dataFile
        myConnection.ConnectionString = connString
    End Sub
    Private Sub Button1_click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FindButton.Click
        myConnection.Open()
        DescriptionText.Clear()
        CostText.Clear()
        PriceText.Clear()
        Dim str As String
        str = "SELECT * FROM Items WHERE (Code = '" & CodeText.Text & "')"
        Dim cmd As OleDbCommand = New OleDbCommand(str, myConnection)
        dr = cmd.ExecuteReader
        While dr.Read()
            DescriptionText.Text = dr("Description").ToString
            CostText.Text = dr("Cost").ToString
            PriceText.Text = dr("Price").ToString
        End While
        myConnection.Close()
    End Sub

End Class

1 Ответов

Рейтинг:
0

Maciej Los

Прежде всего, никогда не используйте конкатенирующую строку в качестве запроса. Это разоблачает вас на SQL-инъекция[^]. Вместо этого используйте параметризованный запрос[^].
Видеть: Объект oledbcommand.Свойство Параметров (System.Data.Для oledb)[^]

Правильный способ работы с данными-это создание Уровень Доступа К Данным[^] и Бизнес-Логики[^].

Наконец, я бы настоятельно рекомендовал прочитать это: Написание переносимого уровня доступа к данным[^] и это: Упрощенный доступ к базе данных через ADO.NET интерфейсы[^]