点击一个按钮关闭在模拟器上运行的应用程序
问题描述:
我正在为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();
}
}
}
}
}
答
你应该离开的关键字旁边的空间(WHERE,AND)您的SQLite查询。
cursor = db.rawQuery("SELECT * FROM " + RegisterUserinDatabase.TABLE_NAME + " WHERE "
+ RegisterUserinDatabase.COLUMN_USERNAME + "=? AND " + RegisterUserinDatabase.COLUMN_PASSWORD
+ "=?", new String [] {username, password});
答
您所查询的代码是错误的:
"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});
请添加崩溃日志。 – Bob