2015-02-24 69 views
0

我有一個表名是'User_tbl',其中我保存所有註冊用戶的數據,並且同一張表用於在登錄期間驗證用戶。如何在登錄後更新列'datetime'

我想在登錄後只更新當前日期時間的'LastSeen'列。

看這張圖片。

enter image description here

背後

protected void Submit(object sender, EventArgs e) 
     { 
      SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); 

      con.Open(); 
      SqlCommand cmd = new SqlCommand("select * from User_tbl where UserName [email protected] and [email protected]", con); 
      cmd.Parameters.AddWithValue("@username", txtUserName.Text); 
      cmd.Parameters.AddWithValue("@password", txtPWD.Text); 

      SqlDataAdapter da = new SqlDataAdapter(cmd); 
      DataTable dt = new DataTable(); 
      da.Fill(dt); 


      if (dt.Rows.Count > 0) 
      { 
       //to define the user seesion (starting user session) 

       Session["username"] = txtUserName.Text; 

       Response.Redirect("default2.aspx"); 

      } 

      else 

      { 

       ClientScript.RegisterStartupScript(Page.GetType(), "LoginValidate", "<script language='javascript'> document.getElementById('errorMessage').innerHTML = 'Invalid Username or Password'</script>"); 

      } 


     } 
+2

但是你沒有閱讀'dt'中的_that_列?也不要將您的密碼存儲爲純文本。閱讀:http://stackoverflow.com/questions/1054022/best-way-to-store-password-in-database – 2015-02-24 12:54:39

+1

最好不要使用AddWithValue - 請參閱http://blogs.msmvps.com/jcoehoorn/blog/ 2014/05/12/can-we-stop-using-addwithvalue-already/ – Elliveny 2015-02-24 13:12:03

回答

1

代碼你的意思是這樣的?

SqlConnection sqlConn = new SqlConnection(connection string here); 
SqlCommand sqlComm = new SqlCommand(); 
sqlComm = sqlConn.CreateCommand(); 
sqlComm.CommandText = @"UPDATE User_tbl SET LastSeen=GetDate() WHERE UserName='@userName'"; 
sqlComm.Parameters.Add("@userName", SqlDbType.VarChar); 
sqlComm.Parameters["@userName"].Value = txtUserName.Text; 
sqlConn.Open(); 
sqlComm.ExecuteNonQuery(); 
sqlConn.Close(); 

您需要在'if(dt.Rows.Count> 0)'代碼中沿着這些行放置某些內容。

您可能希望重用與您爲SELECT語句創建的連接相同的連接。

許多其他選項可用。通常,使用存儲過程可以最好地實現這種功能,在這種情況下,您可以檢查登錄憑據並在對數據庫服務器的單個請求中執行任何相關更新。

+0

我想要這樣。 如果(dt.Rows.Count> 0){ //這裏寫邏輯以更新與日期時間 的Response.Redirect( 「default2.aspx」)LastSeen柱; } – 2015-02-24 13:51:24

+0

這是一個問題嗎?如果是這樣,是的,這是正確的。 – Elliveny 2015-02-24 13:55:24

+0

是的,這是問題..............對,但列仍然沒有更新,錯誤也沒有顯示。 – 2015-02-24 14:07:45