由于我的checkLogIn方法似乎根本不起作用,所以我现在遇到了使用android studio的问题。我想知道是否有人可以指出任何明显的缺陷?通过数据库读取数据?
编辑:当我在主要活动中调用方法时,仍然收到错误消息。在logcat中显示 “getSlotFromBufferLocked:未知缓冲区”
//Class manages all data pertaining to the login page
公共类DBHandler扩展SQLiteOpenHelper {
//Declare constants
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "logindetails.db";
private static final String TABLE_LOGIN = "Logindetails";
private static final String COLUMN_ID = "_id";
private static final String COLUMN_LOGIN = "_logIn";
private static final String COLUMN_PASS = "_password";
//Constructor
public DBHandler(Context context, String name, SQLiteDatabase.CursorFactory factory, int version){
super(context, DATABASE_NAME, factory, DATABASE_VERSION);
}
//On create method - passes through a database object
public void onCreate(SQLiteDatabase db){
//Declares column and table names and data types
String query = "CREATE TABLE " + TABLE_LOGIN + "(" +
COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
COLUMN_LOGIN + " TEXT," +
COLUMN_PASS + " TEXT" +
");";
db.execSQL(query);
}
//On upgrade method
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
db.execSQL("DROP TABLE IF EXISTS " + TABLE_LOGIN);
onCreate(db);
}
//Adds login details to database - Takes a login object as a parameter.
public void addLogIn(LogIns log){
//Declare values and select columns to pass values through
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(COLUMN_LOGIN, log.get_logIn());
values.put(COLUMN_PASS, log.get_password());
//Insert values into the table
db.insert(TABLE_LOGIN, null, values);
db.close();
}
//reads database and gets list of logins - takes the username and password as an argument
public boolean checkLogIn(String user, String pass){
//Declare and initialise variables
boolean success = false;
SQLiteDatabase db = this.getReadableDatabase();
//select columns in a string array
String[] columns = {COLUMN_LOGIN, COLUMN_PASS};
//execute query
Cursor c = db.query(TABLE_LOGIN, columns, null, null, null, null, null);
//Temp string to store results from query
String rName = "";
String rPass = "";
//loop through all rows and data
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()){
int iName = c.getColumnIndex(COLUMN_LOGIN);
int iPass = c.getColumnIndex(COLUMN_PASS);
rName = c.getString(iName);
rPass = c.getString(iPass);
if (user.equals(rName) && pass.equals(rPass)){
success = true;
break;
}
}
return success;
}
}
SQLiteHelper对象在哪里? –
你真的需要一个吗? – waterytart
发布您的logcat – Nenco