2017-08-17 2 views
-1

アンドロイドモバイルアプリのログインを作成していますが、わからない理由があるため、ログインボタンをクリックするとアプリがクラッシュします。見えないコードに間違いがありますか?私はラインの後にコードラインを見てきましたが、私は異常なものを見つけることができません。 ボタンをクリックすると、エミュレータで実行されているアプリが終了します

import android.content.Intent; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class Login extends AppCompatActivity implements View.OnClickListener { 
Button _login_button; 
EditText _AbovePNDUsername, _AbovePNDPassword; 
SQLiteDatabase db; 
SQLiteOpenHelper openHelper; 
Cursor cursor; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 
    openHelper = new RegisterUserinDatabase(this); 
    db = openHelper.getReadableDatabase(); 
    _login_button = (Button) findViewById(R.id.login_button); 
    _AbovePNDUsername = (EditText) findViewById(R.id.AbovePNDUsername); 
    _AbovePNDPassword = (EditText) findViewById(R.id.AbovePNDPassword); 
    _login_button.setOnClickListener(this); 

} 

@Override 
public void onClick(View v) { 


    if (v.getId() == R.id.login_button) { 

     String username = _AbovePNDUsername.getText().toString(); 
     String password = _AbovePNDPassword.getText().toString(); 
     cursor = db.rawQuery("SELECT * FROM " + RegisterUserinDatabase.TABLE_NAME + "WHERE" 
       + RegisterUserinDatabase.COLUMN_USERNAME + "=? AND" + RegisterUserinDatabase.COLUMN_PASSWORD 
       + "=?", new String [] {username, password}); 
     if(cursor != null) 
     { 
      if(cursor.getCount()> 0){ 
       cursor.moveToNext(); 

       Toast.makeText(getApplicationContext(), "login successfully", Toast.LENGTH_LONG).show(); 
       startActivity(new Intent(this, add_treatment.class)); 
      } 
      else { 

       Toast.makeText(getApplicationContext(), "error in login", Toast.LENGTH_LONG).show(); 
      } 

     } 

    } 
} 

}

+1

クラッシュログを追加してください。 – Bob

答えて

2

cursor = db.rawQuery("SELECT * FROM " + RegisterUserinDatabase.TABLE_NAME + " WHERE " 
       + RegisterUserinDatabase.COLUMN_USERNAME + "=? AND " + RegisterUserinDatabase.COLUMN_PASSWORD 
       + "=?", new String [] {username, password}); 
+0

それが問題を解決しました。ありがとうございました – Omade

+0

うまくいけば、アップアップして正しい答えにしてください。 – Bob

+0

私は2分以上それを行う必要があります。ありがとう – Omade

2

あなたのクエリが間違っている以下のコードを参照してください。

"SELECT * FROM " + RegisterUserinDatabase.TABLE_NAME + "WHERE" 

あなたのTABLE_NAMEがスペースで終わっていない限り、これはもちろん間違っている

SELECT * FROM TABLEWHERE 

が生成されますSQL

これは動作するはずです:あなたはあなたのSQLiteクエリのキーワードの横にスペースを残す(AND)必要があります

cursor = db.rawQuery("SELECT * FROM " + RegisterUserinDatabase.TABLE_NAME + " WHERE " 
       + RegisterUserinDatabase.COLUMN_USERNAME + "=? AND " + RegisterUserinDatabase.COLUMN_PASSWORD 
       + "=?", new String [] {username, password}); 
関連する問題