C#代码:使用SQL语句查询多个表并合并到一个新表中,解决数据无法显示问题
C# 代码:使用 SQL 语句查询多个表并合并到一个新表中,解决数据无法显示问题
以下代码演示了如何使用 C# 代码查询多个数据库表并将数据合并到一个新表中。
代码示例:
for (int i = 0; i < 16; i++)
{
string sql = $'select * from {ProductProductionRecorderTableMainName}{i.ToString()} where {ProductionDate}= '{Time}' ';
//SqlConnector.InitialSqlAdapterAndFillTable(sql, ref ClassDataAnlysisSqlAdapter, ref SqlCommandClassDataAnlysis,ref ClassDataAnlysisSqlCMDBuilder, DaliyOutputTable, 'DaliyOutputTable');
foreach (DataRow row in SqlConnector.GetDataTable(sql).Rows)
{
DaliyOutputTable.Rows.Add(row.ItemArray);
}
}
public DataTable GetDataTable(string sql)
{
SqlDataAdapter dataAdapter = null;
try
{
DataTable dataTable = new DataTable();
lock (ConnLock)
{
dataAdapter = new SqlDataAdapter(sql, GetConn());
dataAdapter.Fill(dataTable);
}
return dataTable;
}
catch (Exception ex)
{
throw ex;
}
finally
{
dataAdapter.Dispose();
}
}
常见问题:
如果获取到的数据无法显示在表格中,可能是以下原因导致的:
- 添加数据到新表代码错误: 尝试在添加数据之前打印出获取到的数据,以确保数据已经正确获取。
- 新表结构错误: 确保新表已经正确创建,并且有正确的列名和数据类型。
解决方案:
for (int i = 0; i < 16; i++)
{
string sql = $'select * from {ProductProductionRecorderTableMainName}{i.ToString()} where {ProductionDate}= '{Time}' ';
DataTable dataTable = SqlConnector.GetDataTable(sql);
foreach (DataRow row in dataTable.Rows)
{
Console.WriteLine(row['ColumnName1'].ToString() + ', ' + row['ColumnName2'].ToString() + ', ...');
DaliyOutputTable.Rows.Add(row.ItemArray);
}
}
// 打印出新表的列名和数据类型
foreach (DataColumn column in DaliyOutputTable.Columns)
{
Console.WriteLine(column.ColumnName + ', ' + column.DataType.ToString());
}
// 将新表绑定到DataGridView控件上
datGridView.DataSource = DaliyOutputTable;
解释:
- 代码首先使用循环遍历多个数据库表,并使用 SQL 语句查询每个表中的数据。
- 然后,将查询到的数据添加到一个新的 DataTable 中。
- 最后,将新的 DataTable 绑定到 DataGridView 控件上,以显示数据。
注意:
- 代码中的
ProductProductionRecorderTableMainName和Time需要替换为实际的表名和时间值。 - 代码中的
ColumnName1和ColumnName2需要替换为实际的列名。 SqlConnector类需要根据实际情况进行定义。ConnLock是一个用于防止并发访问数据库连接的锁。- 代码中的
GetConn()方法需要根据实际情况进行定义。
通过以上步骤,就可以将多个数据库表中的数据合并到一个新表中,并将其显示在 DataGridView 控件上。
希望这篇文章对您有所帮助!
原文地址: https://www.cveoy.top/t/topic/ntLK 著作权归作者所有。请勿转载和采集!