You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#读取现有SQLite数据库:文本足球模拟器球员数据调用求助

在C#中读取SQLite数据库球员信息的实用方案

没问题!我来帮你搞定用C#读取SQLite里的球员数据,直接上可落地的步骤和代码:

第一步:准备依赖

首先得给C#项目装上SQLite的官方NuGet包——Microsoft.Data.Sqlite(微软维护,兼容性和稳定性都更靠谱)。你可以在NuGet包管理器里搜索安装,或者用Package Manager Console执行命令:
Install-Package Microsoft.Data.Sqlite

第二步:创建球员模型类

先定义一个和数据库字段对应的类,把读取到的数据规整成对象,方便后续存变量和计算:

public class Player
{
    public string Name { get; set; }
    public string Surname { get; set; }
    public int Attack { get; set; }
    public int Defense { get; set; }
    // 如果还有其他字段(比如年龄、位置),直接加对应属性就行
}

第三步:编写核心读取逻辑

用using语句自动管理数据库连接和资源,避免内存泄漏,同时把查询到的数据映射到Player对象里:

using Microsoft.Data.Sqlite;
using System.Collections.Generic;

public class PlayerDataHandler
{
    private readonly string _dbConnectionString;

    // 构造函数传入数据库路径,方便复用
    public PlayerDataHandler(string databasePath)
    {
        _dbConnectionString = $"Data Source={databasePath};";
    }

    // 获取所有球员信息,返回列表方便后续批量计算
    public List<Player> GetAllPlayers()
    {
        var playerList = new List<Player>();

        using (var connection = new SqliteConnection(_dbConnectionString))
        {
            connection.Open();

            // 注意:这里的表名要和你SQLite里的表一致(假设表叫Players)
            var query = "SELECT Name, Surname, Attack, Defense FROM Players;";

            using (var command = new SqliteCommand(query, connection))
            {
                using (var reader = command.ExecuteReader())
                {
                    // 逐行读取数据,转成Player对象存入列表
                    while (reader.Read())
                    {
                        var player = new Player
                        {
                            Name = reader.GetString(0),
                            Surname = reader.GetString(1),
                            Attack = reader.GetInt32(2),
                            Defense = reader.GetInt32(3)
                        };
                        playerList.Add(player);
                    }
                }
            }
        }

        return playerList;
    }

    // 按需添加:查询单个球员(比如按名字),用参数化查询避免SQL注入
    public Player GetPlayerByFullName(string name, string surname)
    {
        using (var connection = new SqliteConnection(_dbConnectionString))
        {
            connection.Open();
            var query = "SELECT Name, Surname, Attack, Defense FROM Players WHERE Name = @Name AND Surname = @Surname;";
            
            using (var command = new SqliteCommand(query, connection))
            {
                command.Parameters.AddWithValue("@Name", name);
                command.Parameters.AddWithValue("@Surname", surname);
                
                using (var reader = command.ExecuteReader())
                {
                    if (reader.Read())
                    {
                        return new Player
                        {
                            Name = reader.GetString(0),
                            Surname = reader.GetString(1),
                            Attack = reader.GetInt32(2),
                            Defense = reader.GetInt32(3)
                        };
                    }
                }
            }
        }
        return null; // 没找到返回null
    }
}

第四步:调用方法使用数据

在你的业务代码里这样调用,把数据库数据存入变量,就能开展后续计算了:

// 假设你的SQLite数据库文件在项目根目录,叫FootballSim.db
var dataHandler = new PlayerDataHandler("FootballSim.db");

// 把所有球员存入列表变量
List<Player> allPlayers = dataHandler.GetAllPlayers();

// 示例:遍历球员做计算(比如统计平均进攻值)
int totalAttack = 0;
foreach (var player in allPlayers)
{
    Console.WriteLine($"球员:{player.Name} {player.Surname} | 进攻:{player.Attack} | 防守:{player.Defense}");
    totalAttack += player.Attack;
}
double avgAttack = (double)totalAttack / allPlayers.Count;
Console.WriteLine($"所有球员平均进攻值:{avgAttack:F1}");

// 示例:查询单个球员做针对性计算
Player starPlayer = dataHandler.GetPlayerByFullName("Lionel", "Messi");
if (starPlayer != null)
{
    double playerRating = (starPlayer.Attack + starPlayer.Defense) / 2.0;
    Console.WriteLine($"球星{starPlayer.Name} {starPlayer.Surname}的综合评分:{playerRating:F1}");
}

关键注意事项

  • 确保SQLite的表名、字段名和代码里的查询语句完全匹配,不然会读不到数据
  • 一定要用参数化查询(比如GetPlayerByFullName里的@Name),别直接拼接字符串,防止SQL注入风险
  • 如果数据库文件不在项目根目录,要写完整路径:Windows用C:\\YourFolder\\FootballSim.db,Mac/Linux用/Users/YourName/YourFolder/FootballSim.db

这样就能顺利把数据库里的球员信息读到C#变量里,后续的模拟计算就可以基于这些数据展开啦!

内容的提问来源于stack exchange,提问作者user13835384

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 09:32:50