要将整个 `server.accdb` 数据库读取到一个 `List` 中,您可以对 `Datareader` 类进行修改,以便在 `LoadDB()` 方法中使用 `List` 存储数据库的值。以下是您提供的代码的修改版本:

using Microsoft.VisualBasic;

using System;

using System.Collections;

using System.Collections.Concurrent;

using System.Collections.Generic;

using System.Data.OleDb;

using System.Diagnostics;

using System.Linq;

using System.Net.Sockets;

using System.Reflection.Metadata.Ecma335;

using System.Text;

using System.Text.RegularExpressions;

using System.Windows.Forms;

using RWaccess;

namespace DataReader

{

    public class Datareader

    {

        public static readonly string AccDatabasePath = Path.Combine(“.”, “server.accdb”);

        public int MapIndex;

        public string name;

        public List<string[]> LoadDB()

        {

            List<string[]> databaseValues = new List<string[]>();

            string connectionString = “Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” + AppDomain.CurrentDomain.BaseDirectory + “server.accdb”;

            string query = “SELECT * FROM Monster”;

            using (OleDbConnection connection = new OleDbConnection(connectionString))

            {

                OleDbCommand command = new OleDbCommand(query, connection);

                try

                {

                    connection.Open();

                    OleDbDataReader reader = command.ExecuteReader();

                    while (reader.Read())

                    {

                        // 使用reader.GetXXX()方法获取相应字段的值

                        // 示例:假设第一列是整数类型的ID字段,第二列是字符串类型的名称字段

                        int id = reader.GetInt32(0);

                        string name = reader.GetString(1);

                        string[] rowValues = new string[reader.FieldCount];

                        // 遍历每个字段,获取对应的值并存储到数组中

                        for (int i = 0; i < reader.FieldCount; i++)

                        {

                            rowValues[i] = reader.GetValue(i).ToString();

                        }

                        databaseValues.Add(rowValues);

                    }

                    reader.Close();

                }

                catch (OleDbException ex)

                {

                    // 处理异常情况

                }

            }

            return databaseValues;

        }

    }

}

“`

在上面的代码中,我添加了一个 `List<string[]> databaseValues` 变量来存储数据库的值。在每次读取一行数据时,我使用 `reader.GetValue(i).ToString()` 获取每个字段的值,并将它们存储在字符串数组 `rowValues[]` 中。最后,将整个 `rowValues[]` 数组添加到 `databaseValues` 列表中。

您可以在其他类中使用以下代码来读取整个数据库内容:

Datareader datareader = new Datareader();

List<string[]> values = datareader.LoadDB();

// 遍历列表,输出每行的值

foreach (string[] row in values)

{

    foreach (string value in row)

    {

        Console.Write(value + ” “);

    }

    Console.WriteLine();

}

“`

以上代码将按行遍历数据库的值,并将每行的值输出到控制台。您可以根据需要进行进一步处理或存储到适当的数据结构中。

国群英网络版(V33) – Webreg (lingdong.online)