2017-06-14 60 views
0

我有一個數據庫有兩個表,一個用於登錄,另一個用於購買遊戲。我創建了一個登錄會話,現在我無法顯示此特定客戶的所有行。我可以查看MS Access中的表格關係,但我不知道如何在標籤中顯示它們。C# - 如何顯示特定成員的子數據?

這裏是我的編碼:

OleDbDataReader myReader = null; 
OleDbCommand cmd = new OleDbCommand("select * from new_table, games where new_table.MemberID='" + Session["New"] + "'", con); 

myReader = cmd.ExecuteReader(); 

while (myReader.Read()) 
{ 
    label_id.Text = (myReader["MemberID"].ToString()); //welcome user 
} 


OleDbDataReader myReader2 = null; 
OleDbCommand cmd2 = new OleDbCommand("select * from new_table, games where '" + Session["New"] + "' = games.custID", con); 

myReader2 = cmd2.ExecuteReader(); 

if (myReader2.HasRows) 
{ 
    DataTable dt = new DataTable(); 
    dt.Load(myReader2); 

    label1.Text = dt.Rows[0]["gameTitle"].ToString(); 
    label2.Text = "$" + Convert.ToDecimal(dt.Rows[0]["gamePrice"]).ToString("N2"); 
    label3.Text = "$" + Convert.ToDecimal(dt.Rows[0]["gameDisc"]).ToString("N2"); 
    label4.Text = dt.Rows[2]["gameTitle"].ToString(); 
    label7.Text = dt.Rows[4]["gameTitle"].ToString(); 
} 

我在這裏的問題是,如果我設置dt.Rows[3]它顯示錯誤System.IndexOutOfRangeException: There is no row at position 3.。如果這是之前發佈的,我仍然是C#的初學者。對不起,我的英語不好,這不是我的第一語言。

+0

是正確的,你想顯示買了一個客戶的所有遊戲嗎? – grepLines

+0

@grepLines是。但我不知道如何。有幾行具有相同遊戲標題的行,但它們處於不同客戶購買的不同行中。 –

+0

我可以爲您的「遊戲」表添加列名嗎?什麼是'new_table'? – grepLines

回答

0

嘗試此查詢:

string query = "select * from (games 
      inner join new_table on games.custID = new_table.MemberID) 
      where new_table.MemberID = '" + Session["New"] + "'"; 
+0

感謝您的幫助,這是錯誤我得到..異常詳細信息:System.Data.OleDb.OleDbException:FROM子句中的語法錯誤。 –

+0

MemberID是一個'int'類型? – grepLines

+0

你可以試試這個,看看它是否會拋出異常:'select * from games' – grepLines