说我有2代表具有下列名称(tbl1
和tbl2
)的数据库。 上表中的每个表具有不同的列数,tbl1
有3个,而tbl2
有4列。如何动态生成DataTable以及动态生成Columns和Row?
我需要,在上述各表的复制在一个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...
你或许应该使用一个适配器和在数据表的'Fill'方法。 – LarsTech 2013-04-30 17:47:29
或者你可以尝试DataTable.Load()方法 – Alexander 2013-04-30 17:48:37
@Steve这是一个帮助网站,RTFM是不可接受的响应。要么帮助OP回答他的问题,要么不回应。另外,是的,我看到你有28484848的声望。我真的不在乎,这并不能令人满意。 – KyleM 2013-04-30 17:55:56