有没有办法命名/别名SQL查询的数据表?
I.e。:
SELECT TOP 10 * FROM Table_MOON;
SELECT TOP 10 * FROM Table_SUN;
当您在数据集“ds”中加载它时,即在VB.NET中,它变为:
ds.table(0)
ds.table(1)
是否有办法在SQL查询中对表进行别名,以便可以调用以下表:
ds.table("Table_MOON")
ds.table("Table_SUN")
问题是,当表(0)为空时,表(1)变为表(0)......
我没有对这件事进行谷歌搜索,因为涉及的关键词过于笼统。
修改 请注意,我们的想法是将其保留在一个交易中。 此外,迭代数据流方法(添加具有数据表名称的列)是不可接受的,因为嵌套并导致可能的高处理时间。
问候,
Libor的
答案 0 :(得分:3)
是的,你可以。
SqlConnection connection = new SqlConnection("Data Source=localhost; Initial Catalog=myDatabase; Trusted_Connection=true;User Id=;Password=");
connection.Open();
string sqlUsers = @"select * from Users";
string sqlRoles = @"select * from Roles";
SqlDataAdapter daUsers = new SqlDataAdapter(sqlUsers, connection);
SqlDataAdapter daRoles = new SqlDataAdapter(sqlRoles, connection);
DataSet dsUsersAndRoles = new DataSet("UserAndRoles");
daUsers.Fill(dsUsersAndRoles, "users");
daRoles.Fill(dsUsersAndRoles, "roles");
var userTable = dsUsersAndRoles.Tables["users"];
您可以在填写数据集时指定名称。
注意:此代码是c#但我想它应该很容易转换。
这是converter,以防万一。
<强>更新强>:
您可以使用TableMappings
的{{1}}集合来映射查询表达式中的每个表:
SqlDataAdapter
正如您所看到的,我的Sql语句包含3个表上的3个查询。
表名为SqlConnection connection = new SqlConnection("Data Source=localhost; Initial Catalog=myDatabase; Trusted_Connection=true;User Id=;Password=");
connection.Open();
string sqlUsersRoles = @"select * from UserLogins;select * from Users;select * from Roles";
SqlDataAdapter daUsersRoles = new SqlDataAdapter(sqlUsersRoles, connection);
daUsersRoles.TableMappings.Add("Table", "UserLogins");
daUsersRoles.TableMappings.Add("Table1", "Users");
daUsersRoles.TableMappings.Add("Table2", "Roles");
DataSet dsUsersAndRoles = new DataSet("UserAndRoles");
daUsersRoles.Fill(dsUsersAndRoles);
DataTableCollection tables = dsUsersAndRoles.Tables;
DataTable users = tables["Users"];
,Table
,Table1
等等。
您可以重命名它们,将元素添加到集合中:
Table2
答案 1 :(得分:0)
正如我从SQL查询中直接知道的那样,你不能这样做,但你可以在下面手动命名它们:
ds.table[0].TableName = "Table_MOON";