首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何显示表名和每个表行的计数wpf c#

如何显示表名和每个表行的计数wpf c#
EN

Stack Overflow用户
提问于 2022-10-05 01:55:07
回答 2查看 111关注 0票数 -3

我正在努力完成我的毕业设计,这是一个用于数据库传输的桌面应用程序。该申请是由C# WPF提出的。我想在应用程序中引入一个特性,即质量保证,并且应该这样做:在传输特定数据库时,必须显示一条消息,其中必须显示数据库中表的名称和每个表中的数据行数。我找了很多解决这个问题的方法,但没有找到任何具体的解决办法。有人能用csharp给我写这个特性的代码吗?

以下是xaml文件:

代码语言:javascript
运行
AI代码解释
复制
                <DataGrid Name="DataGridTable">
                    <DataGrid.Columns>
                        <DataGridTextColumn x:Name="DaGrTableName" Header="Table Name"/>
                        <DataGridTextColumn x:Name="DaGrRowsCount" Header="Row Count"/>
                    </DataGrid.Columns>
                </DataGrid>

我尝试使用以下代码,但它只显示了一条包含表数和行数的消息:

代码语言:javascript
运行
AI代码解释
复制
                    int rowsNbr = 0;
                    using MySqlDataReader mySqlDataReader = cmd.ExecuteReader();
                    while (mySqlDataReader.Read())
                    {
                        ++rowsNbr;
                    }

                    int tableCount = 0;
                    string countTable = $"SELECT TABLE_NAME, SUM(TABLE_ROWS) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{dbName}' GROUP BY TABLE_NAME;";
                    using MySqlConnection tableConn = new(connString);
                    using MySqlCommand tableComm = new(countTable);
                    tableComm.Connection = tableConn;
                    tableConn.Open();
                    using MySqlDataReader tableReader = tableComm.ExecuteReader();
                    while (tableReader.Read())
                    {
                        ++tableCount;
                    }
                    transferedTextBlock.Text = $"{rowsNbr} Data Rows and {tableCount} Tables have been successfully transfered.";

结果应该显示如下:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-05 04:26:07

不完全确定您的目标是什么,但是一个简单的方法是让DataTable存储所有的表名/行数。然后,只需将DataGrid的数据上下文设置为DataTable的默认视图。

代码语言:javascript
运行
AI代码解释
复制
DataTable myData = new DataTable();
myData.Columns.Add("Table Name", typeof(string));
myData.Columns.Add("Row Count", typeof(string));
myData.Rows.Add("Table 1", "14");
myData.Rows.Add("Table 2", "15");
DataGridTable.DataContext = myData.DefaultView;

根据您的问题,您似乎正在从SQL服务器中提取数据值。只需迭代每个数据值并添加到数据表中,就像我上面所做的那样。

票数 0
EN

Stack Overflow用户

发布于 2022-10-05 04:22:35

我建议通过将DataGrid绑定到项源来填充它。在我的项目中,一个简单的datagrid工作方式如下

代码语言:javascript
运行
AI代码解释
复制
<DataGrid Name="DataGridTable"
          AutoGenerateColumns="False"
          ItemsSource="{Binding TableNameRowCountCollection, UpdateSourceTrigger=PropertyChanged}"
          CanUserAddRows="False">
    <DataGrid.Columns>
        <DataGridTextColumn DataGridTextColumn
                            x:Name="DaGrTableName"
                            Header="Table Name"
                            IsReadOnly="True"
                            Binding="{Binding TableName}"/>
        <DataGridTextColumn x:Name="DaGrRowsCount"
                            Header="Row Count"
                            IsReadOnly="True"
                            Binding="{Binding RowCount}"/>
    </DataGrid.Columns>
</DataGrid>

TableNameRowCountCollection是您的ViewModel中的ObservableCollection<TableRowCount>类型的属性,需要在resp之前填充。就像你展示你的表格一样。TableRowCount是一个简单的对象,保存表名和行计数数据,如

代码语言:javascript
运行
AI代码解释
复制
public class TableRowCount : INotifyPropertyChanged
{
    public string TableName {get; set;}
    public string RowCount {get; set;}
    // TODO: Implement INotifyPropertyChanged
    // TODO: Raise PropertyChanged Event in property setters
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73958704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档