2017-07-03 77 views
-1

我搜索了很多,但找不到合适的解决方案。mysql选择加入数据集和c#中的数据表#

比方说像生病选择数据:

using(MySqlConnection connection = new MySqlConnection(MyConnectionString)) 
using(MySqlCommand cmd = connection.CreateCommand()) 
{ 
    connection.Open(); 
    cmd.CommandText = "SELECT a.Id, a.Foo, b.Bar FROM tableA a, tableB b where a.Id = b.Id"; 
    MySqlDataAdapter da = new MySqlDataAdapter(cmd); 
    DataSet ds = new DataSet(); 
    da.Fill(ds); 
    DataTable dt = ds.Tables[...]; //<== here is the problem 

} 

,我想将它添加到DataTable,

如何调用表在这种情况下?

是tableA吗?

重要的是我怎么命名它?(我可以把它命名为foobar吗?)

+0

正常的一个明确的问题,但总有一个devoter,不能评论这....很伤心!我不知道为什么应该关闭这个问题^^ – Dwza

+0

你可以在这个上下文中命名它。 –

回答

1

目前还不清楚你真正要求的是什么,但是由于评论和澄清的时间长,将其置于答案中。

如果您试图从MySQL返回多个查询结果到单个“DataSet”(可以包含多个表),那么您的查询可能包含多个sql语句,并且每个语句都会返回到您的数据集中表结果。例如,如果你不喜欢的东西......

using(MySqlConnection connection = new MySqlConnection(MyConnectionString)) 
using(MySqlCommand cmd = connection.CreateCommand()) 
{ 
    connection.Open(); 
    cmd.CommandText = 
@"select * from TableA; 

select * from TableB; 

SELECT a.Id, a.Foo, b.Bar FROM tableA a, tableB b where a.Id = b.Id;"; 

    MySqlDataAdapter da = new MySqlDataAdapter(cmd); 
    DataSet ds = new DataSet(); 
    da.Fill(ds); 
} 

你的数据集必须在所提供的查询直接相关的是3个表..

ds.Tables[0] = result of tableA all records. 
ds.Tables[1] = result of tableB all records. 
ds.Tables[2] = result of JOIN query tableA and tableB. 

,那么你可以参考他们不过本地你需要......

ds.Tables[0].TableName = "anyLocalTableNameReference". 
var t1Recs = ds.Tables[0].Rows.Count; 

等...或者,而无需显式引用数据集和表数组引用甚至创建自己的个人数据表变量名

DataTable myLocalTableA = ds.Tables[0]; 
DataTable myLocalTableB = ds.Tables[1]; 
DataTable myJoinResult = ds.Tables[2]; 

希望通过查询和引用返回的多个数据结果以及如何分别引用表来阐明一大堆问题。

+0

为什么不清楚我想要什么?我的意思是有固定的问题,我使用的陈述也很短,并显示加入。无论如何...最后,我可以选择它像一个数组,如果我得到这个权利?!?! – Dwza

+0

通过设置表名'ds.Tables [0] .TableName =“foobar”',我可以将它设置为数据表类似于'DataTable dt = ds.Tables ['foobar'];'? – Dwza