所以我有 3 个名为 abc、t2 和 t3 的 sqlite 表。我想将它们全部合并到一个数据网格中。我的意思是,首先出现 abc,然后应该是 t2,然后是 t3。
这是我在数据网格视图中仅显示表 abc 的原始代码:
string sql = " SELECT * FROM abc";
SQLiteDataAdapter da;
DataTable dt;
sqlite_cmd.CommandText = sql;
//Create New Datatable to fill with data
dt = new DataTable();
//Create DataAdapter to fill data in DataTable via Adapter
da = new SQLiteDataAdapter(sql, sqlite_conn);
da.Fill(dt);
// Lets populate the datagrid
dataGridView1.DataSource = dt;
dataGridView1.Refresh();
下面的代码是用户建议我应该用来将所有 3 个表合并到 1 个数据网格视图中的代码。由于我缺乏编程知识,我不知道如何将他的答案与我上面的代码同步。我从他的代码中得到的错误是名称“abc”、“t2”和“t3”在当前上下文中不存在。(很可能是因为它们没有任何 sqlite 语句
这里的目标是将 3 个表合并到 1 个数据网格视图中。上面的错误阻止我这样做。完整代码的答案将不胜感激。
DataTable allDTs = abc;
int rowCount = allDTs.Rows.Count - 1;
foreach (DataRow row in t2.Rows)
{
rowCount = rowCount + 1;
allDTs.Rows.Add();
int colCount = -1;
foreach (DataColumn col in t2.Columns)
{
colCount = colCount + 1;
if (colCount > allDTs.Columns.Count - 1) allDTs.Columns.Add(col.ColumnName);
allDTs.Rows[rowCount][colCount] = row[col];
}
}
rowCount = allDTs.Rows.Count - 1;
foreach (DataRow row in t3.Rows)
{
rowCount = rowCount + 1;
allDTs.Rows.Add();
int colCount = -1;
foreach (DataColumn col in t3.Columns)
{
colCount = colCount + 1;
if (colCount > allDTs.Columns.Count - 1) allDTs.Columns.Add(col.ColumnName);
allDTs.Rows[rowCount][colCount] = row[col];
}
}
dataGridView1.DataSource = allDTs;