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

如何通过绑定将MySQL数据库数据传递至ListView/GridView

从MySQL数据库获取数据绑定到WPF ListView

步骤1:安装MySQL数据访问包

首先需要安装MySQL的.NET数据驱动,推荐使用MySqlConnector(轻量且维护活跃),可通过NuGet包管理器搜索安装,或在Package Manager Console执行:

Install-Package MySqlConnector

步骤2:配置数据库连接字符串

根据你的数据库实例信息编写连接字符串,示例格式:

string connectionString = "server=localhost;database=你的数据库名;user=用户名;password=密码;port=3306;";

更规范的做法是将连接字符串存入App.config,方便后续修改:

<configuration>
  <connectionStrings>
    <add name="BuildDB" connectionString="server=localhost;database=BuildDB;user=root;password=123456;port=3306;" />
  </connectionStrings>
</configuration>

步骤3:修改BuildManager从数据库拉取数据

替换原有的静态方法,实现从MySQL查询并映射数据到BuildModel列表:

using MySqlConnector;
using System.Configuration; // 读取App.config需引用此命名空间

public class BuildManager
{
    public static List<BuildModel> GetBuilds()
    {
        List<BuildModel> items = new List<BuildModel>();
        // 从配置文件读取连接字符串
        string connectionString = ConfigurationManager.ConnectionStrings["BuildDB"].ConnectionString;

        // 使用using语句自动释放数据库资源
        using (MySqlConnection conn = new MySqlConnection(connectionString))
        {
            conn.Open();
            // 替换为你的数据库表名
            string query = "SELECT ID, Title, Description, BuildData, Architect, Location, Teg FROM Builds;";
            
            using (MySqlCommand cmd = new MySqlCommand(query, conn))
            {
                using (MySqlDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        BuildModel model = new BuildModel()
                        {
                            ID = reader.GetInt32("ID"),
                            Title = reader.IsDBNull(reader.GetOrdinal("Title")) ? null : reader.GetString("Title"),
                            Description = reader.IsDBNull(reader.GetOrdinal("Description")) ? null : reader.GetString("Description"),
                            BuildData = reader.IsDBNull(reader.GetOrdinal("BuildData")) ? null : reader.GetString("BuildData"),
                            Architect = reader.GetInt32("Architect"),
                            Location = reader.GetInt32("Location"),
                            Teg = reader.GetInt32("Teg")
                        };
                        items.Add(model);
                    }
                }
            }
        }
        return items;
    }
}

步骤4:保留原有WPF绑定逻辑

你的XAML标记和页面代码无需修改,原有的LVBuild.ItemsSource = BuildManager.GetBuilds();会自动将数据库返回的列表绑定到ListView,通过已配置的DisplayMemberBinding完成属性与列的映射。

额外建议

  • 异步优化:若数据量较大,建议改用异步方法避免UI卡顿,将方法改为async Task<List<BuildModel>> GetBuildsAsync(),并使用await cmd.ExecuteReaderAsync()等异步API,页面中通过await BuildManager.GetBuildsAsync()赋值。
  • 异常处理:实际项目中需添加try-catch块处理数据库连接、查询异常,比如记录日志或提示用户。
  • 空值处理:数据库字段可能为NULL,需用reader.IsDBNull判断,避免抛出类型转换异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 10:15:35