You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

C# WPF中SQLite数据绑定DataGrid无内容显示问题排查

问题分析与解决方案:DataGrid未显示数据的原因

你遇到的问题核心点很明确:你传给Load方法的SQL语句是CREATE VIEW,这是一条DDL(数据定义语言)命令,它只会创建视图,不会返回任何查询结果集

为什么会这样?

当你调用dataAdapter.Fill(dataTable)时,它需要SQL命令返回一个结果集才能填充DataTable。但CREATE VIEW执行成功后不会返回任何行数据,所以你的DataTable是空的,绑定到DataGrid后自然就显示空白了——哪怕视图本身在数据库里已经存在且有数据,也不会自动把视图的数据查出来。

SQLite Browser里能看到视图有数据,是因为你手动查看了视图的内容,但你的代码里只做了创建视图这一步,根本没去查询视图的数据。

怎么解决?

你需要把操作拆成两步:先创建视图(如果不存在),再查询视图的数据来绑定到DataGrid。

1. 给MyController添加一个执行无返回结果SQL的方法

用来处理CREATE VIEW这类DDL命令:

public void ExecuteNonQuery(string commandText)
{
    try
    {
        _db.OpenConnection();
        using (SQLiteCommand command = new SQLiteCommand(commandText, _db.Connection))
        {
            // 执行无返回结果的SQL命令
            command.ExecuteNonQuery();
        }
    }
    catch (Exception exp)
    {
        // 这里保留你的异常处理逻辑
    }
}

2. 修改DataGrid_1_Loaded里的调用逻辑

先创建视图,再查询视图数据:

// 第一步:确保视图存在(执行DDL命令)
MyController.ExecuteNonQuery("CREATE VIEW IF NOT EXISTS content_for_dg AS SELECT name,surname FROM people");
// 第二步:查询视图数据,绑定到DataGrid
MyController.Load(DataGrid_1, "SELECT * FROM content_for_dg");

额外验证点

  • 先在SQLite Browser里测试SELECT * FROM content_for_dg,确认确实能返回数据
  • 检查DataGrid的AutoGenerateColumns="True"是否生效,有没有其他XAML属性(比如Visibility)意外隐藏了列
  • 确认你的数据库连接指向的是正确的数据库文件,避免连接到了空的测试库

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

火山引擎 最新活动