2016-12-02 35 views
0

當我登錄我想顯示用戶的圖像。
我使用行[0],但是當我更改行[1]中的用戶時,它向我顯示行[0]圖像。
我如何實現代碼來切換行並知道用戶登錄。
我是初學者,所以慢慢來吧。如果我從行[0]從數據庫用戶登錄圖像顯示,但是當我從行[1]用戶登錄圖像它不是displyed

`C# 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Session["Username"] != null) 
    { 
     String a = ConfigurationManager.ConnectionStrings["MyDatabase"].ConnectionString; 
     using (SqlConnection con = new SqlConnection(a)) 
     { 
      DataTable dt = new DataTable(); 
      SqlDataAdapter comanda = new SqlDataAdapter("SELECT *FROM Register", con); 
      comanda.Fill(dt); 


      if (dt.Rows.Count > 0) 
      { 
       emailutilizator.Text = dt.Rows[0]["Email"].ToString(); 
      } 

      if (dt.Rows[0]["ImageData"].ToString().Length > 1) 
      { 
       Image1.ImageUrl = dt.Rows[0]["ImageData"].ToString(); 
      } 
      else 
      { 
       Image1.ImageUrl = "~/images/defaultuserimg.png"; 
      } 
     }` 
    } 

數據庫看起來像這樣

`Tabel 

CREATE TABLE [dbo].[Register] (
    [Uid]  INT   IDENTITY (1, 1) NOT NULL, 
    [Username] NVARCHAR (MAX) NULL, 
    [Email]  NVARCHAR (MAX) NULL, 
    [Password] NVARCHAR (MAX) NULL, 
    [ImageData] NVARCHAR (MAX) NULL, 
    PRIMARY KEY CLUSTERED ([Uid] ASC) 
); 
` 

您與

SELECT * FROM Register 

但隨後讓所有的行[中從數據庫信息] [enter image description here] 2

+0

它看起來像你需要當前用戶。您正在對圖像數據長度進行比較,但只會在row0上進行比較,row0將成爲row0上用戶的圖像。你需要找出當前用戶是哪一行。 有了這些數據,你也應該縮小你的SQL語句,試着看看這個問題的答案:http://stackoverflow.com/questions/19078072/best-way-to-protect-against-sql-injection- in-sqldataadapter – Robbie

回答

1

首先,在您的SQL語句中,使用WHERE條件來恢復登錄的用戶。

SqlDataAdapter comanda = new SqlDataAdapter("SELECT * FROM Register WHERE [email protected]", con); 
comanda.SelectCommand.Parameters.AddWithValue("@username",Session["Username"]); 

然後你總是可以使用row [0],因爲它只會返回當前用戶。

該解決方案包含SQL注入保護。

+1

謝謝你的信息...我欣賞 – Daniel

+0

@SereDaniel你應該標記爲答案,無論哪裏有人的解決方案已經解決了你的問題。 – Robbie

+1

對不起,這是我的第一篇文章... thx告訴我... – Daniel

2

總是選擇第一行Row [0 ]。

您應將其更改爲

SELECT * FROM Register WHERE Username = ' + Session["Username"] + ' 

這樣,你只會得到一個行,以便與行中選擇[0]會被罰款。

......但不要這樣做,因爲它開放SQL注入攻擊。請參閱What are good ways to prevent SQL injection?

+0

非常感謝你,我試了一天就明白了.... thx再次:D – Daniel

+1

在那裏,我知道有人會填補空白 - 看到從@Robbie –

+0

soluton我看到它,它的運行完美 – Daniel

相關問題