查询Access数据库vb.net

时间:2014-04-07 21:21:56

标签: arrays vb.net linq ms-access querying

我试图弄清楚如何查询访问数据库以从数据库获取信息并将其放入类数组中。我知道如何使用基本的LINQ进行一些查询,但不知道如何按照我想要的方式进行查询。我有一个我正在使用的角色类,我将所有角色特征存储在数据库中。我想查询数据库并将该信息添加到类数组中。任何帮助将不胜感激。

这里是类私有变量,它们是数据库中的相同特征:

    Public Class Character
        Private _strName As String
        Private _intLevel As Integer
        Private _intHealth As Integer
        Private _intDamage As Integer
        Private _intScore As Integer

1 个答案:

答案 0 :(得分:0)

首先。我不得不说这不是一个好问题。 实际上你所说的是......:请为我建立这个访问数据库和视觉工作室表格的数据连接。

但是因为我心情愉快,这就是我为你所做的。

我在access中创建了一个小数据库文件。我把它保存到一个名为database的文件夹中。它位于项目目录中。

我做了2节课。 1个CharactersForm和2个网关

网关是与您的Acces数据库建立连接。 CharactersForm是您在调试时看到的形式

这是CharactersForm类。 确保拖放列表框和按钮 调用列表框ListBoxCharacters。 拨打按钮InladenButton。或者随意调用它,但要确保它符合给定的代码。

Option Explicit On
Option Strict On
Option Infer On

    Public Class CharactersForm

        Dim _CharactersGateway As New Gateway

        Private Sub InladenButton_Click(sender As Object, e As EventArgs) Handles InladenButton.Click
            _CharactersGateway.LoadDataTableCharacters()

            ListBoxCharacters.DataSource = _CharactersGateway.CharactersDataTable

            ListBoxCharacters.DisplayMember = "Name"

        End Sub
    End Class

网关类(连接到您的访问文件) 如果visual studio无法访问数据库,则表示连接字符串不正确。确保连接字符串与accesfile.accdb所在的位置完全相同

Option Explicit On
Option Strict On
Option Infer On

Imports System.IO
Imports System.Data.OleDb

Public Class Gateway

    Public Shared AppPath As String = Application.StartupPath()
    '\Debug
    Public Shared DirectoryUp1 As String = Path.GetDirectoryName(AppPath)
    '\bin
    Public Shared DirectoryUp2 As String = Path.GetDirectoryName(DirectoryUp1)
    '\CharactersStackOverFlow
    Public Shared DirectoryUp3 As String = Path.GetDirectoryName(DirectoryUp2)
    '\CharactersStackOverFlow
    Public Shared AccesDatabaseFilePath As String = DirectoryUp3 & "\DataBase\Characters.accdb"

    Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & AccesDatabaseFilePath)

    Public Property DataSetCharacters As New DataSet

    Public ReadOnly Property CharactersDataTable As DataTable
        Get
            CharactersDataTable = DataSetCharacters.Tables("Characters")
        End Get
    End Property
    Public CharactersDataAdapter As OleDbDataAdapter

    Public Sub LoadDataTableCharacters()

        CharactersDataAdapter = New OleDbDataAdapter("SELECT * FROM Characters", ConnectionString)

        CharactersDataAdapter.Fill(DataSetCharacters, "Characters")
        Dim kamersCommandBuilder As New OleDbCommandBuilder(CharactersDataAdapter)

    End Sub

End Class

这是Yuriy Galanter所说的。你需要OleDbConnection。 如果您使用的是Office 2010,则会收到警告::

'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine

您需要下载2007 Office System驱动程序。它也适用于2010年,不要问我为什么。

键入' 2007 Office System驱动程序'在谷歌。从microsoft您可以下载并安装它。

全部完成!

如果您运行程序并按下加载按钮。您的角色名称将出现在列表框中。

如果要将数据库的字段值放在变量中。然后它只是制作一个for循环并将它们放在变暗的变量中。这是我确定你可以自己做的事情。现在已经整理了与数据库的连接和程序中的加载!

祝你好运

乔纳森