2017-03-31 5 views
1

Androidスタジオ、あまり使われていないので、私はまだ頭を抱えています。EditText入力に一致するカーソルの結果

ユーザーの登録情報を格納するローカルデータベースを作成しましたが、問題なく動作しています。 ID /名前/電子メール/パスワードフィールドを取得しました。

今私はログイン機能を整理しようとしています。これは、私が苦労しているところです。カーソルを初めて使用するからです。単純に、電子メールとパスワードのフィールドを順番に調べ、一致したものを見つけ、ユーザーをログインさせる必要があります。私の現在の内容はDatabaseHelperClassです。

public boolean passwordOk(String Editemail, String Editpassword) { 
     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor res = db.rawQuery("select * from " + TABLE_NAME + " where " + COL_3 + "="+ Editemail + " and " + COL_4 + "=" + Editpassword + "'", null); 

     return (res.getCount() == 1); 

    } 

これは私のMainActivityで使用するものです。

public void passwordOK(){ 

     loginB.setOnClickListener(
       new View.OnClickListener() { 
        public void onClick(View v) { 
        boolean isInsert = myD.passwordOk(editEmail.getText().toString(), editPassword.getText().toString()); 
         if (isInsert == true) 
          Toast.makeText(MainActivity.this, "You Have Successfully Logged in", Toast.LENGTH_LONG).show(); 
       else Toast.makeText(MainActivity.this, "Oops! Try Again", Toast.LENGTH_LONG).show(); 



        } 
       } 
     ); 
    } 

ここで私が投げているエラーは、アプリケーションを閉じます。

3月31日16:11:37.351 26018から26018/com.example.onein.jobgosite E/AndroidRuntime:致命的な例外:メイン プロセス:com.example.onein.jobgosite、PID:26018 アンドロイド.database.sqlite.SQLiteException:認識できないトークン: "'"(コード 1)、コンパイル中:選択*行うと PASSWORD = DOH = EMAIL USER_INFOから' android.database.sqlite.SQLiteConnection.nativePrepareStatementで(ネイティブ メソッド) at android.database.sqlite.SQLiteConnectio n.acquirePreparedStatement android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)で android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:498)で(SQLiteConnection.java:887) でandroid.database.sqlite.SQLiteProgram。(SQLiteProgram.java:58) android.database.sqlite.SQLiteQueryた。(SQLiteQuery.java:37) android.database.sqlite.SQLiteDirectCursorDriver.queryで(SQLiteDirectCursorDriver.java:44 ) at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316) でandroid.database.sqlite.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1255) でcom.example.onein.jobgosite.DatabaseHelperClass.passwordOk(DatabaseHelperClass.java:62) com.example.onein.jobgositeました。 MainActivity $ 2.onClick(MainActivity.java:67) android.view.View.performClick(View.java:5198) (android.view.View)$ PerformClick.run(View.java:21147) はandroid.osです。 .Handler.handleCallback(Handler.java:739) とandroid.os.Handler.dispatchMessage(Handler.java:95) とandroid.os.Looper.loop(Looper.java:148) android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(ネイティブメソッド) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java :726) at com.android.internal.os.ZygoteInit.main(ZygoteInit。Javaの:616)

すべてのヘルプは感謝

、それは愚かな何かとそれを動作させるために単純なものは、おそらくですが、何らかの理由で、私はカーソルがどのように機能するかを可視化し、それがどのように働いてもらうのに苦労しています。ありがとう!

答えて

0

使用この文字"あなたのパラメータで、このような何か:

Cursor res = db.rawQuery("SELECT * from " + "\'"+TABLE_NAME+"\'"+ " where " + "\'"+COL_3+"\'" + "="+"\'"+ Editemail +"\'"+ " and " +"\'"+ COL_4 +"\'"+ "=" + "\'"+Editpassword +"\'"+ "", null); 

しかし、より良い練習がを使用することですか?オペランド。

私はあなたがこれをチェック実現: "" "

res != null 

また、ここでは、余分な文字がある。このようにする必要があります:への変更これは

res.getCount() == 1 

Editpassword + "" 
+0

お返事ありがとうございます。まだエラーがスローされています。私のメインクラスで私に致命的な例外を与えます。パスワードOKにアクセスしていますか? – gumtrees

+0

ああ、それは動作します。あなたは私に何時間もの愚かな編集をしてくれました。本当にありがとうございました。それは何かばかげたことを知っていた。 – gumtrees

関連する問題