[英]C# - Select Data from two tables in SQL to Dataset
我的数据库中有两个表(“用户”和“城市”),我想选择此表中的所有数据,其中“用户”表中的UserID = 1列。
但是数据集找不到我的表(用户和城市)
这是我的SQL查询:
SELECT * FROM Users INNER JOIN Cities ON Cities.CityID=Users.CityID WHERE Users.UserID=1
这是Mathod:
public static DataSet GetData(string SqlQuery)
{
OleDbConnection con = new OleDbConnection(conString);
OleDbCommand cmd = new OleDbCommand(SqlQuery, con);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
码:
DataSet ds = GetData(myQuery);
string fname = ds.Tables["Users"].Rows[0]["UserFisrtName"].ToString();
string lname = ds.Tables["Users"].Rows[0]["UserLastName"].ToString();
string city = ds.Tables["Cities"].Rows[0]["CityName"].ToString();
string output = "Name: " + fname + " " + lname + " City: " + city;
如果要在数据集中添加2个数据表,请将sql查询更改为此。
SELECT * FROM Users WHERE Users.UserID=1; select * from City where CityID in (Select cityid from users where userID = 1);
然后,用户表将在ds.Tables [0]上,城市表将在ds.Tables [1]上。
请记住使用using子句以确保正确放置连接等。
public static DataSet GetData(string SqlQuery)
{
using(var con = new OleDbConnection(conString))
using(var cmd = new OleDbCommand(SqlQuery, con))
using(var da = new OleDbDataAdapter(cmd))
{
var ds = new DataSet();
da.Fill(ds);
return ds;
}
}
码:
var ds = GetData(myQuery);
var fname = ds.Tables[0].Rows[0]["UserFisrtName"].ToString();
var lname = ds.Tables[0].Rows[0]["UserLastName"].ToString();
var city = ds.Tables[1].Rows[0]["CityName"].ToString();
var output = "Name: " + fname + " " + lname + " City: " + city;
我在sql查询中找到了答案
SELECT * FROM Users, Cities WHERE Users.CityID=Cities.CityID AND Users.UserID=1
在数据集中,表将不会自动具有从中选择表的名称。 改用普通字母:
DataSet ds = GetData(myQuery);
string fname = ds.Tables[0].Rows[0]["UserFisrtName"].ToString();
string lname = ds.Tables[0].Rows[0]["UserLastName"].ToString();
string city = ds.Tables[0].Rows[0]["CityName"].ToString();
string output = "Name: " + fname + " " + lname + " City: " + city;
您仅用一个表填充数据集,这是因为Sql语句仅返回一组数据。 为了访问使用索引的表,只有列名会映射到表的行中,因此可以按索引或按名称访问此值。
SELECT * FROM Users INNER JOIN Cities ON Cities.CityID=Users.CityID WHERE Users.UserID=1
还要避免使用SELECT *
这是因为您强迫数据库引擎搜索所有表的列,而不是仅使用已经提供的列,并且如果您不使用全部或有人更改表中的顺序,则可以未来的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.