0

所以我有 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;
4

0 回答 0