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

WPF C#实现数据库表名及各表行数展示功能求助

实现方案

1. 定义数据模型

创建TableInfo类存储表名与行数,实现INotifyPropertyChanged接口支持WPF数据绑定:

using System.ComponentModel;

public class TableInfo : INotifyPropertyChanged
{
    private string _tableName;
    private int _rowCount;

    public string TableName
    {
        get => _tableName;
        set
        {
            _tableName = value;
            OnPropertyChanged(nameof(TableName));
        }
    }

    public int RowCount
    {
        get => _rowCount;
        set
        {
            _rowCount = value;
            OnPropertyChanged(nameof(RowCount));
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

2. 配置XAML中的DataGrid

手动指定绑定列,确保数据正确映射:

<Window x:Class="YourProjectNamespace.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="数据库表信息" Height="450" Width="800">
    <Grid>
        <DataGrid x:Name="dgTableStats" 
                  AutoGenerateColumns="False" 
                  Margin="10"
                  CanUserAddRows="False">
            <DataGrid.Columns>
                <DataGridTextColumn Header="表名称" Binding="{Binding TableName}" Width="*"/>
                <DataGridTextColumn Header="数据行数" Binding="{Binding RowCount}" Width="150"/>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>

3. 编写数据库查询逻辑

在窗口后台代码中实现表数据查询,并绑定到DataGrid:

using System.Collections.ObjectModel;
using System.Data.SqlClient;
using System.Windows;

public partial class MainWindow : Window
{
    private readonly ObservableCollection<TableInfo> _tableData = new ObservableCollection<TableInfo>();

    public MainWindow()
    {
        InitializeComponent();
        dgTableStats.ItemsSource = _tableData;
        // 替换为你的目标数据库连接字符串
        LoadTableData("Server=YOUR_SERVER;Database=YOUR_DB;Integrated Security=True;");
    }

    private void LoadTableData(string connectionString)
    {
        _tableData.Clear();
        using (var conn = new SqlConnection(connectionString))
        {
            conn.Open();
            // SQL Server查询语句,获取所有用户表及行数
            var query = @"
                SELECT 
                    t.name AS TableName,
                    SUM(p.rows) AS RowCount
                FROM sys.tables t
                JOIN sys.partitions p ON t.object_id = p.object_id
                WHERE t.type = 'U' AND p.index_id IN (0,1)
                GROUP BY t.name
                ORDER BY t.name";

            using (var cmd = new SqlCommand(query, conn))
            using (var reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    _tableData.Add(new TableInfo
                    {
                        TableName = reader["TableName"].ToString(),
                        RowCount = Convert.ToInt32(reader["RowCount"])
                    });
                }
            }
        }
    }
}

适配其他数据库说明

如果使用非SQL Server数据库,替换查询语句即可:

  • MySQL:SELECT table_name AS TableName, table_rows AS RowCount FROM information_schema.tables WHERE table_schema = 'YOUR_DB_NAME'
  • Oracle:SELECT table_name AS TableName, num_rows AS RowCount FROM user_tables

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 10:10:29