拿到手的代码是别人写好需要我再修改的,所以只记录一下我做的读取数据的工作。
工程中已经完成的是新建了一个继承了SQLiteOpenHelper的类DatabaseHelper。
在需要调用数据库的activity中,首先引用DatabaseHelper新建一个对象helper,然后我写了一个方法获取数据:
public String getInformation(DatabaseHelper helper,String index) {
SQLiteDatabase db = helper.getReadableDatabase();
String result = "";
String[] whereArgs=new String[]{ UserID };
/*query是谷歌提供的一个类,在这里我调用的完整语句及参数是:query(String table, String[] columns, String selection,String[] selectionArgs, String groupBy, String having,String orderBy),每个参数的含义是:
table:查询的表名;
columns:需要返回的列,如果是null就是返回所有列;
selection:和后面的参数selectionArgs一起构成查询的条件,在这里使用的是userid;
selectionArgs:在这里表示的是返回所有userid这一列的内容是“UserID”的列;
剩下三个参数我没有用到,也就不说了
*/
Cursor cursor=db.query("contacts", null, "userid=?" ,whereArgs, null, null, null);
/*我对于cursor的理解是它相当于一个数据集,有点像MySQL里面的结果集一样需要遍历,但是据说cursor开始的时候总是指向最后一个,所以首先要调用moveToFirst()移到第一行,否则会报错android.database.CursorIndexOutOfBoundsException:Index -1 requested*/
for (cursor.moveToFirst();!(cursor.isAfterLast());cursor.moveToNext()) {
//index就是创建表的时候的列名,要先得到这一列的Index,再使用Index获得对应的值
int Index = cursor.getColumnIndex(index);
result=cursor.getString(Index);//}
}
cursor.close();//关闭结果集
db.close();//关闭数据库对象
return result;
}
最后调用上面的方法就可以给String类型的变量赋值,比如:
private String sex;
sex=getInformation(helper,"sex");
如果有哪里写得不对欢迎指正。