2016-04-09 19 views
-2

Kullanıcının parolasını değiştirmek istediğim bir sınıf yazdım. Ben bu veriyi veri tabanına girdiğim halde, böyle bir sütun yazmam gerekmiyor, ve giriş için 'C3438525' kullanılıyor. herhangi diğerleri isteyiniz ihtiyaç vardır ve onları yapıştırmak edeceğiz varsa)Parolayı Değiştirme - SQLite Veritabanını Güncelleştirin - Böyle Bir Sütun Yok

birkaç farklı SQL deyiminin biçimlerini ancak hiçbir sonuç İşte

kullanarak denedim

sınıfıdır.

changePassword.java

public class changePassword extends Activity { 

    SQLiteDatabase checkDB; 
    DB db = new DB(this); 
    //Load session name 
    String sessionName; 
    String sessionPassword; 
    String currentPasswordString; 
    String newPassword1String; 
    String newPassword2String; 
    //Load text fields 
    EditText currentPassword; 
    EditText newPassword1; 
    EditText newPassword2; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.changepassword); 
     Button changePassword = (Button)findViewById(R.id.changePasswordButton); 
     //Load session name 
     SharedPreferences preferences = getSharedPreferences("temp", getApplicationContext().MODE_PRIVATE); 
     sessionName = preferences.getString("sessionName", ""); 
     sessionPassword = preferences.getString("sessionPassword", ""); 
     currentPassword = (EditText)findViewById(R.id.currentPassword); 
     newPassword1 = (EditText)findViewById(R.id.newpassword1);  
     newPassword2 = (EditText)findViewById(R.id.newpassword2); 
    } 

    //Mismatched password checking 
    public void updatePassword(View v) 
    {  
     currentPasswordString = currentPassword.getText().toString(); 
     newPassword1String = newPassword1.getText().toString(); 
     newPassword2String = newPassword2.getText().toString(); 
     Toast.makeText(changePassword.this, sessionName.toString(), Toast.LENGTH_LONG).show(); 
     Toast.makeText(changePassword.this, newPassword2String.toString(), Toast.LENGTH_LONG).show(); 
     if (currentPasswordString.equals(sessionPassword)) 
     { 
      if (newPassword1String.equals(newPassword2String)) 
      { 
      checkDB = db.getWritableDatabase(); 
      checkDB.execSQL("UPDATE Students SET Student_Password=" + newPassword2String + " WHERE CNumber= " + sessionName); 
      Log.d("Password", "Changed"); 
      } 
     } 
    } 

LogCat:

04-09 10:40:23.895: E/AndroidRuntime(2144): FATAL EXCEPTION: main 
04-09 10:40:23.895: E/AndroidRuntime(2144): Process: com.example.project, PID: 2144 
04-09 10:40:23.895: E/AndroidRuntime(2144): java.lang.IllegalStateException: Could not execute method of the activity 
04-09 10:40:23.895: E/AndroidRuntime(2144):  at android.view.View$1.onClick(View.java:3823) 
04-09 10:40:23.895: E/AndroidRuntime(2144):  at android.view.View.performClick(View.java:4438) 
04-09 10:40:23.895: E/AndroidRuntime(2144):  at android.view.View$PerformClick.run(View.java:18422) 
04-09 10:40:23.895: E/AndroidRuntime(2144):  at android.os.Handler.handleCallback(Handler.java:733) 
04-09 10:40:23.895: E/AndroidRuntime(2144):  at android.os.Handler.dispatchMessage(Handler.java:95) 
04-09 10:40:23.895: E/AndroidRuntime(2144):  at android.os.Looper.loop(Looper.java:136) 
04-09 10:40:23.895: E/AndroidRuntime(2144):  at android.app.ActivityThread.main(ActivityThread.java:5001) 
04-09 10:40:23.895: E/AndroidRuntime(2144):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-09 10:40:23.895: E/AndroidRuntime(2144):  at java.lang.reflect.Method.invoke(Method.java:515) 
04-09 10:40:23.895: E/AndroidRuntime(2144):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785) 
04-09 10:40:23.895: E/AndroidRuntime(2144):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
04-09 10:40:23.895: E/AndroidRuntime(2144):  at dalvik.system.NativeStart.main(Native Method) 
04-09 10:40:23.895: E/AndroidRuntime(2144): Caused by: java.lang.reflect.InvocationTargetException 
04-09 10:40:23.895: E/AndroidRuntime(2144):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-09 10:40:23.895: E/AndroidRuntime(2144):  at java.lang.reflect.Method.invoke(Method.java:515) 
04-09 10:40:23.895: E/AndroidRuntime(2144):  at android.view.View$1.onClick(View.java:3818) 
04-09 10:40:23.895: E/AndroidRuntime(2144):  ... 11 more 
04-09 10:40:23.895: E/AndroidRuntime(2144): Caused by: android.database.sqlite.SQLiteException: no such column: C3438525 (code 1): , while compiling: UPDATE Students SET Student_Password=1234 WHERE CNumber=C3438525 
04-09 10:40:23.895: E/AndroidRuntime(2144):  at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) 
04-09 10:40:23.895: E/AndroidRuntime(2144):  at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889) 
04-09 10:40:23.895: E/AndroidRuntime(2144):  at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500) 
04-09 10:40:23.895: E/AndroidRuntime(2144):  at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588) 
04-09 10:40:23.895: E/AndroidRuntime(2144):  at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58) 
04-09 10:40:23.895: E/AndroidRuntime(2144):  at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31) 
04-09 10:40:23.895: E/AndroidRuntime(2144):  at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1672) 
04-09 10:40:23.895: E/AndroidRuntime(2144):  at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1603) 
04-09 10:40:23.895: E/AndroidRuntime(2144):  at com.example.project.changePassword.updatePassword(changePassword.java:64) 
04-09 10:40:23.895: E/AndroidRuntime(2144):  ... 14 more 
+4

UPDATE deyimi –

+1

yılında SessionName etrafında Seti '..' Ve etrafında 'newPassword2String' –

+0

tekrar kaldırmayı denedin mi? – Rasel

cevap

0

bazı seçenekler: gibi, SQL deyiminde değere tek tırnak ekleyerek

  • Dene:

... SET Student_Password = '1234' NEREDE ...

  • Yakın zamanda veritabanı şeması değişiklikler yapmış olabilir, DBHelper içindeki tek veritabanı sürümü artan (veya uygulamayı içinde yeniden kurmayı deneyin kullandığınız cihaz).

  • Oluşturma ifadesini kontrol edin ve sütun adını ve türünü doğrulayın. Ayrıca

+0

efsanesine getirin :) –

İlgili konular