2012-08-27 50 views
0

更改密碼。任何人都可以幫助我獲得解決方案嗎?我想從表中更改密碼和我得到的錯誤從表

這裏是我的數據庫類代碼:

public boolean change(String answer, String newpassword) { 
    String sql = "UPDATE "+DATABASE_TABLE +" SET " + KEY_PASSWORD+ " = '"+newpassword+"' WHERE "+KEY_ANSWER+ " = "+answer; 
    Cursor cur=db.rawQuery(sql, null); 
    if (cur != null) {   
     if(cur.getCount() > 0) 
     { 
      return true; 
     } 
    } 
    return false; 
} 

這裏是我的Android代碼:

if(quest.change(answer, newpassword)){ 
    Intent login=new Intent(forgot.this, securityLogin.class); 
    startActivity(login); 
} else{ 
    Toast.makeText(forgot.this, "wrong answer",Toast.LENGTH_SHORT).show(); 
} 

這裏是我的logcat:

08-27 13:23:52.735: E/AndroidRuntime(464): FATAL EXCEPTION: main 
08-27 13:23:52.735: E/AndroidRuntime(464): java.lang.IllegalStateException: database not open 
08-27 13:23:52.735: E/AndroidRuntime(464):  at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1333) 
08-27 13:23:52.735: E/AndroidRuntime(464):  at android.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1315) 
08-27 13:23:52.735: E/AndroidRuntime(464):  at com.inovawe.inwp.securityDB.change(securityDB.java:163) 
08-27 13:23:52.735: E/AndroidRuntime(464):  at com.inovawe.inwp.forgot$1.onClick(forgot.java:36) 
08-27 13:23:52.735: E/AndroidRuntime(464):  at android.view.View.performClick(View.java:2408) 
08-27 13:23:52.735: E/AndroidRuntime(464):  at android.view.View$PerformClick.run(View.java:8816) 
08-27 13:23:52.735: E/AndroidRuntime(464):  at android.os.Handler.handleCallback(Handler.java:587) 
08-27 13:23:52.735: E/AndroidRuntime(464):  at android.os.Handler.dispatchMessage(Handler.java:92) 
08-27 13:23:52.735: E/AndroidRuntime(464):  at android.os.Looper.loop(Looper.java:123) 
08-27 13:23:52.735: E/AndroidRuntime(464):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
08-27 13:23:52.735: E/AndroidRuntime(464):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-27 13:23:52.735: E/AndroidRuntime(464):  at java.lang.reflect.Method.invoke(Method.java:521) 
08-27 13:23:52.735: E/AndroidRuntime(464):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
08-27 13:23:52.735: E/AndroidRuntime(464):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
08-27 13:23:52.735: E/AndroidRuntime(464):  at dalvik.system.NativeStart.main(Native Method) 

我得到了答案,下面的代碼工作

rawQuery("UPDATE "+DATABASE_TABLE +" SET " + KEY_PASSWORD+ " = '"+newpassword+"' WHERE answer=?", new String[]{answer}); 
+0

更新之前打開您的數據庫。 – rajeshwaran

+0

你** **分貝變量爲NULL,該行'光標CUR = db.rawQuery(SQL,NULL);' – Lucifer

回答

0
"08-27 13:23:52.735: E/AndroidRuntime(464): java.lang.IllegalStateException: database not open" 

在你的代碼中你打開了一個到數據庫的連接?

+0

感謝我得到的結果。 – suresh

0

您需要打開更新前你的數據庫連接。喜歡的東西

db.Open(); 

if (!db.isOpen()) { 
    db = getApplicationContext().openOrCreateDatabase(DATABASE_PATH, SQLiteDatabase.OPEN_READWRITE, null); 
} 

並記住您的工作完成後,關閉連接。

+0

謝謝我得到了結果。 – suresh

0

您使用db.close()請只創建一個數據庫實例並關閉所有的交易完成後,之前關閉數據庫。

+0

謝謝我得到了結果。 – suresh

相關問題