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
相关产品推荐
相关产品推荐

