簡體   English   中英

C#-從SQL的兩個表中選擇數據到數據集

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM