Android应用程序在某个事件后不断崩溃

Android应用程序在某个事件后不断崩溃,android,sqlite,login,registration,Android,Sqlite,Login,Registration,我是一个新的编码在安卓系统。我编写了一个非常简单的注册和登录方法。 每次我注册后尝试登录时,应用程序都会停止工作 我的听众 bLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String username = etUsername.getText().toString(); St

我是一个新的编码在安卓系统。我编写了一个非常简单的注册和登录方法。 每次我注册后尝试登录时,应用程序都会停止工作

我的听众

bLogin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String username = etUsername.getText().toString();
            String password = etPassword.getText().toString();

            String pass = helper.searchPass(username);
            if(password.equals(pass))
            {
                Intent i = new Intent(LoginActivity.this, UserAreaActivity.class);
                LoginActivity.this.startActivity(i);
            }
            else
            {
                Toast wrgPass = Toast.makeText(LoginActivity.this, "Username and password don't match!" , Toast.LENGTH_SHORT);
                wrgPass.show();
            }


        }
    });
我的搜索通行证方法

public String searchPass(String username)
{
    db = this.getReadableDatabase();
    String query = "select username, password from "+ TABLE_NAME;
    Cursor cursor = db.rawQuery(query, null);
    String a,b;
    //a is Username and b is Password
    b = "not found";
    if(cursor.moveToFirst())
    {
        do{
            a = cursor.getString(0);
            b = cursor.getString(1);

            if (a.equals(username))
            {
                b = cursor.getString(1);
                break;
            }
        }
        while(cursor.moveToNext());

    }

    return b;

}
还有我对SQLite DB的声明

public class DatabaseHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "contacts.db";
private static final String TABLE_NAME = "contacts";
private static final String COLUMN_ID = "id";
private static final String COLUMN_NAME = "name";
private static final String COLUMN_EMAIL = "email";
private static final String COLUMN_USERNAME = "username";
private static final String COLUMN_PASSWORD = "password";
SQLiteDatabase db;

private static final String TABLE_CREATE = "create table " +TABLE_NAME + "("
        + COLUMN_ID +"integer primary key,"
        + COLUMN_NAME + " text,"
        + COLUMN_EMAIL + " text,"
        + COLUMN_PASSWORD + " text,"
        + COLUMN_USERNAME + " text )";

public DatabaseHelper(Context context)
{
    super(context , DATABASE_NAME , null , DATABASE_VERSION);
}

@Override
public void onCreate(SQLiteDatabase db){
    db.execSQL(TABLE_CREATE);
    this.db = db;

}
堆栈跟踪

Process: com.example.lenovo.loginappv2, PID: 6022
android.database.sqlite.SQLiteException: no such column: username (code 1): , while compiling: select username, passwordcontacts
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:889)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:500)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
我不确定哪里出了错。这将是有益的,如果可以提供解释的解决方案,因为我仍然是非常新的Android语言

编辑:将Imgur添加到stackTrace

编辑2:删除Imgur并添加StackTrace的前几行

您的查询是错误的

换成

String theParameter = " WHERE " + "username='" + username + "'";
String query = "SELECT * FROM " + TABLE_NAME + theParameter;
这将是您的完整方法:

 public String searchPass(String username)
{
    db = this.getReadableDatabase();
    Sring theParameter = " WHERE " + "username='" + username + "'";
    String query = "SELECT * FROM " + TABLE_NAME + theParameter;
    Cursor cursor = db.rawQuery(query, null);
    String a,b;
    //a is Username and b is Password
    b = "not found";
    if(cursor.moveToFirst())
    {
        do{
            a = cursor.getString(0);
            b = cursor.getString(1);

            if (a.equals(username))
            {
                b = cursor.getString(1);
                break;
            }
        }
        while(cursor.moveToNext());

    }

    return b;

}

添加StackTrace打印崩溃日志的可能副本@JJG我已经添加了stacktrace@SaraTirmizi我已经添加了StackTrace我已经更改了它,应用程序仍然停止了。您在数据库中添加了该列吗??您在表中添加了列吗?您先添加了吗。。数据库表中的任何列。。??确保正确添加列名称。正确添加的列名称这次的错误不同。这是一种无法惊吓我们的活动。