0

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

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

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

1 回答 1

0

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

但因为我心情好,所以我为你做的。

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

我做了2节课。1个CharactersForm和2个Gateway

网关将连接到您的访问数据库。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

正如尤里·加兰特所说。您需要 OleDbConnection。如果您使用的是 office 2010 并收到此警告 ::

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

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

在谷歌中输入“2007 Office System Driver”。您可以从 microsoft 下载并安装它。

全部完成!

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

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

祝你好运

乔纳森

于 2014-04-08T03:22:18.360 回答