2016-04-09 13 views
-2

私は、ユーザーのパスワードを変更するクラスを作成しました。私は、それが一致するデータベースにデータを入力したにもかかわらず、そのような列がないと言う事実から離れて、それはすべて罰金を設定していると 'C3438525'はログインに使用されている(これは、 )パスワードの変更 - SQLiteデータベースの更新 - そのような列なし

私は、SQL文のいくつかの異なるフォーマットを使用してみましたが、他のものを尋ねると、私はそれらを貼り付けますしてください必要な場合は結果はここで

は、クラスではありません。

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

セット「..」sessionNameの周りUPDATEステートメント –

+1

でもnewPassword2String' –

+0

'あなたの周りには、もう一度アンインストールしてみましたか? – Rasel

答えて

0

いくつかのオプション:同様に、SQL文で値に単一引用符を追加する

  • してみてください。

... SET Student_Password =「1234」WHERE ...

  • あなたは最近DBHelper内部のデータベース・バージョンで増加(またはでアプリを再インストールしてみてください、データベーススキーマへの変更を行っていることあなたが使用しているデバイス)。

  • create文を確認し、列名と型を確認します。

+0

legend thankyou :) –

関連する問題