我正在努力完成我的毕业设计,这是一个用于数据库传输的桌面应用程序。该申请是由C# WPF提出的。我想在应用程序中引入一个特性,即质量保证,并且应该这样做:在传输特定数据库时,必须显示一条消息,其中必须显示数据库中表的名称和每个表中的数据行数。我找了很多解决这个问题的方法,但没有找到任何具体的解决办法。有人能用csharp给我写这个特性的代码吗?
以下是xaml文件:
<DataGrid Name="DataGridTable">
<DataGrid.Columns>
<DataGridTextColumn x:Name="DaGrTableName" Header="Table Name"/>
<DataGridTextColumn x:Name="DaGrRowsCount" Header="Row Count"/>
</DataGrid.Columns>
</DataGrid>
我尝试使用以下代码,但它只显示了一条包含表数和行数的消息:
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.";
结果应该显示如下:
发布于 2022-10-05 04:26:07
不完全确定您的目标是什么,但是一个简单的方法是让DataTable存储所有的表名/行数。然后,只需将DataGrid的数据上下文设置为DataTable的默认视图。
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服务器中提取数据值。只需迭代每个数据值并添加到数据表中,就像我上面所做的那样。
发布于 2022-10-05 04:22:35
我建议通过将DataGrid绑定到项源来填充它。在我的项目中,一个简单的datagrid工作方式如下
<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是一个简单的对象,保存表名和行计数数据,如
public class TableRowCount : INotifyPropertyChanged
{
public string TableName {get; set;}
public string RowCount {get; set;}
// TODO: Implement INotifyPropertyChanged
// TODO: Raise PropertyChanged Event in property setters
}
https://stackoverflow.com/questions/73958704
复制相似问题