2013-04-06 130 views
0

我需要更新我的密碼錶,如果用戶想更改密碼... 我該怎麼做.. 我試圖自己做,但應用程序意外停止..無法更新我的數據庫表

這裏是changepassword.java

public void insertvalues() 
{ 
    prefEditor.putString("Oldpin", Oldpin); 
    prefEditor.putString("Newpin", Newpin); 
    prefEditor.putString("Confirm", Confirm); 


    prefEditor.commit(); 

    try 
    { 

     WayDataBase way=new WayDataBase(getApplicationContext()); 


     way.updatePin(Newpin,Oldpin); 



    } 

,這裏是updatePin功能

public void updatePin(String newpin,String oldpin) 
{ 
    openOrCreateDatabase(); 
    db.execSQL("UPDATE"+pinTable+"set Pin="+newpin+"where Pin="+oldpin+");"); 

    closeDatabase(); 
} 

我在這裏做錯了什麼?請解釋..我似乎無法弄清楚!

回答

0

你下面的代碼似乎缺少空間

public void updatePin(String newpin,String oldpin) 
{ 
    openOrCreateDatabase(); 
    db.execSQL("UPDATE"+pinTable+"set Pin="+newpin+"where Pin="+oldpin+");"); 

    closeDatabase(); 
} 

它會更好,如果你有這樣嗎?

public void updatePin(String newpin,String oldpin) 
{ 
    openOrCreateDatabase(); 
    db.execSQL("UPDATE "+pinTable+" SET Pin='"+newpin+"' where Pin='"+oldpin+"'"); 

    closeDatabase(); 
} 

如果從我加空格也觀察之外,我還添加了單引號 如果它發生在你的數據庫中的銷區/列是字符串或文本數據類型。 否則,如果它是一個數字說一個整數,然後再刪除單引號,如 下面一個。

public void updatePin(String newpin,String oldpin) 
{ 
    openOrCreateDatabase(); 
    db.execSQL("UPDATE "+pinTable+" SET Pin= "+newpin+" where Pin="+oldpin); 

    closeDatabase(); 

} 

此外,我不知道它是否是從你身邊的錯誤類型。但是你需要添加「);」在oldpin +之後 ? 順便提一下,建議在單獨的變量中分隔sql字符串。通過這種方式,您可以輕鬆地調試字符串本身以發現任何錯誤,如下所示。

public void updatePin(String newpin,String oldpin) 
{ 
    String sql = "UPDATE "+pinTable+" SET Pin= "+newpin+" where Pin="+oldpin; 
    openOrCreateDatabase(); 
    db.execSQL(sql); 

    closeDatabase(); 

} 
+0

我嘗試了所有這些,他們都沒有爲我工作.. – shivani 2013-04-08 05:14:07