
要将整个 `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();
}
“`
以上代码将按行遍历数据库的值,并将每行的值输出到控制台。您可以根据需要进行进一步处理或存储到适当的数据结构中。