2011-11-02 80 views
-1
using (OdbcConnection con = new OdbcConnection(ConnStr)) 
    using (OdbcCommand cmd = new OdbcCommand("UPDATE tblUsers SET FirstName = ?, LastName = ?, UserName = ?, Password = ?, EmailId = ? where UserId=?", con)) 
    { 


     cmd.Parameters.Add("@UserId", OdbcType.Int).Value = IntUesrId; 
     cmd.Parameters.Add("@FirstName", OdbcType.VarChar, 255).Value = FirstName; 
     cmd.Parameters.Add("@LastName", OdbcType.VarChar, 255).Value = LastName; 
     cmd.Parameters.Add("@UserName", OdbcType.VarChar, 255).Value = UserName; 
     cmd.Parameters.Add("@Password", OdbcType.VarChar, 255).Value = Password; 
     cmd.Parameters.Add("@EmailId", OdbcType.VarChar, 255).Value = EmailId; 

     //cmd.Parameters.Add("@UserId", IntUesrId) ; 
     //cmd.Parameters.Add("@FirstName", ObjUserProp.FirstName); 
     //cmd.Parameters.Add("@LastName", ObjUserProp.LastName) ; 
     //cmd.Parameters.Add("@UserName", ObjUserProp.UserName); 
     //cmd.Parameters.Add("@Password", ObjUserProp.Password) ; 
     //cmd.Parameters.Add("@EmailId", ObjUserProp.EmailId) ; 

     con.Open(); 

     Isdone=cmd.ExecuteNonQuery(); 

     return Isdone; 

我嘗試使用上面的代碼更新記錄,則沒有表現出任何錯誤也不會更新記錄如何更新通過使用ASP.NET控件記錄與MySQL

+0

請確保您有一個針對表中查詢參數IntUesrId的有效行,並且您傳遞的是正確的值。 – Muse

回答

0

你永遠提交更改到數據庫。

您需要啓動一個事務,然後一旦執行更新,就提交事務以便保持更改。

http://msdn.microsoft.com/en-us/library/system.data.odbc.odbctransaction.aspx

+0

在這種情況下,COMMAI不是必需的。 OP不創建任何交易,他只是更新。 – Muse

+0

@CodeBuzz以及這些更改如何持續?我們使用Oracle,但上面的模式相同,如果您不提交更改,則更改永遠不會持久存在數據庫中。 –

0

設置斷點,並嘗試調試代碼塊。確保你的表中有一個有效的行,針對查詢參數IntUesrId,並且你正在傳遞正確的值。我的猜測是,您沒有爲更新查詢參數設置任何值(IntUesrId)。

0

您正在錯誤地構建您的參數。

using (OdbcCommand cmd = new OdbcCommand("UPDATE tblUsers SET FirstName = ?, LastName = ?, UserName = ?, Password = ?, EmailId = ? where UserId=?", con)) 
    { 
     cmd.Parameters.Add("@UserId", OdbcType.Int).Value = IntUesrId; 
     cmd.Parameters.Add("@FirstName", OdbcType.VarChar, 255).Value = FirstName; 
     cmd.Parameters.Add("@LastName", OdbcType.VarChar, 255).Value = LastName; 
     cmd.Parameters.Add("@UserName", OdbcType.VarChar, 255).Value = UserName; 
     cmd.Parameters.Add("@Password", OdbcType.VarChar, 255).Value = Password; 
     cmd.Parameters.Add("@EmailId", OdbcType.VarChar, 255).Value = EmailId; 
    } 

這應該是更象:

using (OdbcCommand cmd = new OdbcCommand(@"UPDATE tblUsers SET FirstName = ?firstName, LastName = ?lastName, UserName = ?userName, Password = ?password, EmailId = ?email where UserId=?userId", con)) 
{ 
    cmd.Parameters.Add("?firstName", OdbcType.VarChar, 255).Value = FirstName; 
    cmd.Parameters.Add("?lastName", OdbcType.VarChar, 255).Value = LastName; 
    cmd.Parameters.Add("?userName", OdbcType.VarChar, 255).Value = UserName; 
    cmd.Parameters.Add("?password", OdbcType.VarChar, 255).Value = Password; 
    cmd.Parameters.Add("?email", OdbcType.VarChar, 255).Value = EmailId; 
    cmd.Parameters.Add("?UserId", OdbcType.Int).Value = IntUesrId; 
} 

的主要問題是,你永遠不會找到正確的用戶更新,你與他們的電子郵件地址設置WHERE條款,而不是他們的用戶ID 。所以不,它很可能不會出錯。