作为一名Android Studio初学者,我会遇到很多我找不到的小错误,请让我知道我在做错什么,因为我以某种方式尝试了所有其他答案,但并没有得到改善: )
public class DatabaseHelper extends SQLiteOpenHelper{
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "UserManager.db";
private static final String TABLE_USER = "user";
private static final String COLUMN_USER_ID= "user_id";
private static final String COLUMN_USER_NAME= "user_name";
private static final String COLUMN_USER_EMAIL= "user_email";
private static final String COLUMN_USER_PASSWORD= "user_password";
private String CREATE_USER_TABLE = "CREATE TABLE " + TABLE_USER + "(" +
COLUMN_USER_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ COLUMN_USER_NAME + " TEXT," + COLUMN_USER_EMAIL + " TEXT," +
COLUMN_USER_PASSWORD + " TEXT" + ")";
private String DROP_USER_TABLE = " DROP TABLE IF EXISTS " + TABLE_USER;
public DatabaseHelper(Context context){
super(context, DATABASE_NAME,null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db){
db.execSQL(CREATE_USER_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
db.execSQL(DROP_USER_TABLE);
onCreate(db);
}
public void addUser(User user){
SQLiteDatabase db= this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(COLUMN_USER_NAME, user.getName());
values.put(COLUMN_USER_EMAIL, user.getEmail());
values.put(COLUMN_USER_PASSWORD, user.getPassword());
db.insert(TABLE_USER,null, values);
db.close();
}
public boolean checkUser(String password, String email){
String[] columns = {
COLUMN_USER_ID
};
SQLiteDatabase db= this.getWritableDatabase();
String selection = COLUMN_USER_EMAIL + " = ? " + "AND "+ COLUMN_USER_PASSWORD+" =? ";
String[] selectionArgs = { email,password };
Cursor cursor = db.query(TABLE_USER,
columns,
selection,
selectionArgs,
null,
null,
null);
int cursorCount = cursor.getCount();
cursor.close();
db.close();
if(cursorCount > 0){
return true;
}
return false;
}
}
我知道logcat让我知道这一点:
07-11 22:08:29.072 9071-9071/com.example.lavinia.sqllogin E/AndroidRuntime:
FATAL EXCEPTION: main
Process: com.example.lavinia.sqllogin, PID: 9071
android.database.sqlite.SQLiteException: no such column: user_id (code 1
SQLITE_ERROR): , while compiling: SELECT user_id FROM user WHERE user_email =
?AND user_password =?
而且我找不到 user_id 的错误用法,我认为我使用得很好,并且在登录自己后该应用程序将停止运行。 (该应用程序具有登录和注册活动-并且注册可以正常进行,但是在Login.activity中按“登录”按钮会使应用程序崩溃)
非常感谢您的支持:)如果需要,我将提供进一步的代码。
答案 0 :(得分:0)
此问题可能是由于 我往往会遇到很多细微的错误 ,以及对onCreate
方法的常见误解。
onCreate
方法仅在数据库已经创建并已实际创建时自动自动运行一次。它不会在每次运行该应用程序时运行。
因此,如果在onCreate
方法中对结构(表和列)进行了更改/编码,则将不应用对结构(表和列)的任何更改(包括更正)。
开发最简单的解决方法是执行以下3项之一:-
onCreate
)。onCreate
)。onUpgrade
方法将删除表,然后调用onCreate
,以增加作为第4个参数传递给SQLIteOpenHelper子类(又称为DatabaseHelper类)的数据库版本号)。执行上述操作之一后,重新运行该应用程序。