淘先锋技术网

首页 1 2 3 4 5 6 7

android官网对于SQLite数据库的create update insert delete select有简单的介绍:http://developer.android.com/intl/zh-cn/training/basics/data-storage/databases.html

1、多表查询&用cursor读取数据

由于android并没有提供多表查询的封装方法,所以必须用原始的sql语句进行rawquary,而不能用官网提供的quary方法。

使用select语句还需要掌握如何用cursor读取每一条数据。

注意点:尽量不要用for语句让cursor从第一条,move到最后第N条(亲测,java求N的时候经常会出错,这样就会导致读取数据崩溃,所以一定要用while语句来做!)可以参考这个链接:http://stackoverflow.com/questions/19974442/android-database-cursorindexoutofboundsexception

sql="select "+Config.KEY_Exercise_SportsName+","+Config.KEY_Exercise_SportsCalorie+" from "+Config.TB_MeasuredExerciseRecord+
				" where "+Config.COL_UserName+"='"+account+"'";
		cursor=db.rawQuery(sql,null);

		if(cursor!=null && cursor.moveToFirst()){
		    do {
		        String name= cursor.getString(cursor.getColumnIndex(Config.KEY_Exercise_SportsName));
		        String strCalorie=cursor.getString(cursor.getColumnIndex(Config.KEY_Exercise_SportsCalorie));
		        Float calorie=Float.parseFloat(strCalorie);
		    
		        DataRecordListEntity.getTodayInstance().addToStrSportsList(name);
		        UserEntity.getInstance().addtoTodayConsumption(calorie);
		    } while (cursor.moveToNext());
		}

2、直接导入SQLite数据库到手机

创建数据库除了直接用android官网提供的代码创建之外,还可以先将空的数据库文件放到raw文件夹下,然后通过代码将这个文件导入到手机某个路径之下,导入数据库的方法参见:http://my.oschina.net/laiwanshan/blog/99982

注意点:

(1)每次通过run as android application运行新的程序的时候,手机里面的database不会自动删除并重新载入空的db,所以如果在raw中的数据库有所修改,需要先删除手机中的db文件,然后再执行importDB。删除文件的操作也很简单,直接用java里面删除某个路径的文件的代码即可。

(2)需要在Manifest清单中获得操作数据库的permission以及对sdcard文件进行读写的permission.

(3)导入数据库的代码段importDB(参见后面的示例代码)必须放在一个activity当中执行,对应到之前给出的方法链接也就是“在程序第一个Activity实例化一个DBManager对象”

(4)为了调试方便,可以将数据库导入到手机的sdcard的根目录下,这样可以直接用SQLITE EXPERT软件打开这个db文件,查看数据。