2017-08-17 43 views
-1

我正在爲android手機應用程序創建登錄,但由於某些原因,我不知道,當我點擊登錄按鈕時,它會使應用程序崩潰。我的代碼有什麼問題,我看不到?我已經看過線後的代碼行,但我找不到任何異常。 見下面點擊一個按鈕關閉在模擬器上運行的應用程序

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

你應該離開的關鍵字旁邊的空間(WHERE,AND)您的SQLite查詢。

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

這應該工作:

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