2011-06-28 64 views
0

我想更新onButtonClick上的一組數據。 我有一個用戶名,出生日期, 與CurrentEmailAddress,NewEmailAdrress,ConfirmNewEmailAddressc#更新數據庫問題

我試着去更新他們都在一個單一的點擊。我能夠更新用戶名,但我無法更新出生日期和電子郵件地址。

下面是我的C#代碼: 也注意到,myDBmanager是執行該更新文件並沒有問題

//SQL query 
     string updateSQL = "UPDATE user_profile,user_login SET "; 
     updateSQL += "user_profile.user_name = '" + txtUserName.Text + "', "; 
     updateSQL += "user_profile.user_dob = '" + txtDateOfBirth.Text + "'"; 


      if (txtNewPassword.Text != " " && txtNewEmailAddress.Text == " ") 
      { 
       updateSQL += ", user_login.user_passw = '" + txtNewPassword.Text + "'"; 
      } 
      else if (txtNewPassword.Text == " " && txtNewEmailAddress.Text != " ") 
      { 
       updateSQL += ", user_profile.user_email = '" + txtNewEmailAddress.Text + "'"; 

      } 
      else if (txtNewPassword.Text != " " && txtNewEmailAddress.Text != " ") 
      { 
       updateSQL += ", user_login.user_passw = '" + txtNewPassword.Text + "',"; 
       updateSQL += "user_profile.user_email = '" + txtNewEmailAddress.Text + "'"; 
      } 
      else { } 

      updateSQL += " WHERE user_profile.user_profile_id = 1 "; 
      updateSQL += " AND user_login.user_profile_id = 1 ;"; 
      updateSQL += Global.myDBManager.GetNewIndex(); 

      int update = Global.myDBManager.ExecuteSql(updateSQL); 



     //Close connection 
     Global.myDBManager.Disconnect(); 
+0

您是否遇到異常? – Haukman

+0

什麼是錯誤? – ChrisBint

+8

你真的真的很想使用命令參數。通過用戶輸入的字符串連接構建sql查詢** IS EVIL **。 – ChrisWue

回答

3

傾聽這個問題中的意見 - 除了沒有真正爲您工作,您正在做的事情對於SQL注入攻擊來說是非常危險的並且已經成熟。谷歌爲「SQL注入C#」和實施解決方案 - 這篇文章看起來很不錯:

http://www.codeproject.com/KB/database/SqlInjectionAttacks.aspx

一旦你固定的,你可能有/有某種被阻止你的代碼,從簡單的代碼的bug工作,因爲你的方法(除了漏洞)看起來不錯。

在方法的頂部粘貼一個斷點,並通過該方法工作,確保正在按預期構建SQL字符串。

希望有幫助!

+0

好吧生病了,儘管如此,並回到你身邊。謝謝 –

0

對於檢查空字符串,使用

!string.IsNullOrWhiteSpace(txtNewPassword.Text) 

,而不是

txtNewPassword.Text != " " 

謝謝 Ashwani

+0

非常好的做法,而不是使用它(如果他使用的是.NET 4) – Haukman

+0

是的即時通訊使用它,但我有一個錯誤說,錯誤'字符串'不包含'IsNullOrWhiteSpace'的定義 –

+1

這是新的。 NET 4.您可以使用IsNullOrEmpty,但不會爲您修剪空白,因此您必須手動執行此操作。 – Haukman