2016-04-09 13 views
-2

Ich habe eine Klasse geschrieben, die ich das Passwort des Benutzers ändern möchte. Ich habe alles gut eingerichtet abgesehen von der Tatsache, dass es keine solche Spalte sagt, obwohl ich Daten in die Datenbank eingegeben habe, die es entspricht, und "C3438525" wird für die Anmeldung verwendet (die erfolgreich funktioniert, zeigt es in der Datenbank gut)Passwort ändern - SQLite-Datenbank aktualisieren - keine solche Spalte

ich mehrere verschiedene Formate von SQL-Anweisung aber keine Ergebnisse

Hier verwenden versucht haben, ist die Klasse, wenn alle anderen benötigt werden, wenden Sie sich bitte und ich werde sie einfügen.

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

Set '..' um die session in der UPDATE-Anweisung –

+1

Und auch um 'newPassword2String' –

+0

Haben Sie versucht, wieder zu deinstallieren? – Rasel

Antwort

0

Einige Optionen:

  • Try Apostrophe auf den Wert in der SQL-Anweisung hinzufügen, wie:

... SET Student_Password = '1234' WHERE ...

  • Sie haben möglicherweise Änderungen an der Datenbank-Schema vor kurzem getan, versuchen durch eine die Datenbankversion innerhalb des DBHelper Erhöhung (oder Neuinstallation der App in das Gerät, das Sie verwenden).

  • Überprüfen Sie die create-Anweisung und überprüfen Sie den Spaltennamen und -typ.

+0

legende danke :) –

Verwandte Themen