2017-08-17 37 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});