假设我有一个数据库,其中包含 2 个具有以下名称 (tbl1
和tbl2
) 的表。上面的每个表都有不同的列数,tbl1
有 3列,tbl2
有 4 列。
我需要将上述每个表格复制到DataTable
.
当然,我可以像下面的代码一样手动完成:
class
{
public Main()
{
// for tbl1 with 3 columns.
string sql = "select * from tbl1"
MySqlCommand com = new MySqlCommand(sql, con);
MySqlDataReader dr = com.ExecuteDataReader();
DataTable dt = GetDataTable(3);
while (dr.Read())
{
if (dr.HasRows)
{
dt.Rows.Add(dr[0], dr[1], dr[2]); <---- Point of interest
}
}
// for tbl2 with 4 columns.
string sql = "select * from tbl2";
MySqlCommand com = new MySqlCommand(sql, con);
MySqlDataReader dr = com.ExecuteDataReader();
DataTable dt = GetDataTable(4);
while (dr.Read())
{
if (dr.HasRows)
{
dt.Rows.Add(dr[0], dr[1], dr[2], dr[3]); <---- Point of interest
}
}
}
public DataTable GetDataTable(int columnCount)
{
DataTable dt = new DataTable();
if (columnCount > 0)
{
for (int i = 0; i < length; i++)
{
dt.Columns.Add(i.ToString(), typeof(object));
}
}
return dt;
}
}
但我想做的是以自动化的方式进行上述过程,特别是在我指示箭头的部分。
有没有一种方法可以像在列上那样动态添加行?
我在想我可以通过使用生成将行添加为字符串的过程并将该字符串作为命令调用的函数来动态添加行,但我真的很迷茫,不知道该怎么做......请看下面的代码.
EX:
String generated from a function base on number of columns:
"dt.Rows.Add(dr[0], dr[1], dr[2], dr[3])"
Then, use the string as a command to add rows...