1.数据库存储
- 创建数据库
第一步继承 SQLiteOpenHelper 在构造方法里面 创建数据库这个类提供了创建 数据库 、数据表、更新数据表结构的功能,
第二步,创建数据表,我选择在onCreate()方法里面
第三步 更新表的结构, 需要特别注意,覆盖一个原本安装的程序时并不会改变旧数据库的表结构,此时如果增大数据库版本号
就能调用onUpgrade()方法来重新建立数据表,具体实施看下面的代码。
public class DBHelper extends SQLiteOpenHelper { // 数据库名 private final static String DATABASE_NAME = "health"; // 数据库版本 private final static int DATABASE_VERSION = 1; // 用户表名 private final static String TABLE_NAME = "user"; public DBHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } /** * * 当第一次创建数据库时调用此方法 * * @see android.database.sqlite.SQLiteOpenHelper#onCreate(android.database.sqlite.SQLiteDatabase) * @date: Created on 2012-7-4 下午1:36:16 */ @Override public void onCreate(SQLiteDatabase db) { // 用户表 String sql = "CREATE TABLE USER (_ID INTEGER PRIMARY KEY AUTOINCREMENT,UID text,NAME text,UDEFAULT text,UIAMGE text,UDUSER text)"; db.execSQL(sql); } /** * * 当对数据库进行更新修改新增操作时 调用此方法 * * @see android.database.sqlite.SQLiteOpenHelper#onUpgrade(android.database.sqlite.SQLiteDatabase, * int, int) * @date: Created on 2012-7-4 下午1:36:01 */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // TODO Auto-generated method stub String sql = " DROP TABLE IF EXISTS " + TABLE_NAME; db.execSQL(sql); onCreate(db); } }
- 数据库操作
查询数据
SQLiteDatabase db = dbHelper.getReadableDatabase();
cursor = db.rawQuery("select * from advice where userId = ? and signId = ? limit " + startPosition + ",20",new String[] { userId, signId });
时间查询
查询出来的时间字段数据加一秒
cursor = db.rawQuery("select datetime(time,'+1 seconds') time from waf where attentionId = ? order by time desc",new String[] { attentionId });
查询两个时间段之间的数据
sb.append("select * from BP_DATA where PersonID = "+ personId+ " and AddDate between datetime('"+ begin+ "') and datetime('" + end + "') ORDER BY AddDate DESC ");
db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("content", advice.advice);
db.insert("advice", null, values);
更新数据
db = dbHelper.getWritableDatabase();
db.execSQL("update advice set flag=? where userId = ? and signId = ? and time = ?", new Object[] {
advice.flag, userId, advice.signId, advice.adviceDate });
删除数据
db.delete(SqliteHelper. TB_NAME,UserInfo. USERID + "=?", new String[]{UserId})
清空数据库
db.execSQL("delete from advice");
删除数据库
String sql = " DROP TABLE IF EXISTS " + TABLE_NAME;
最后请不要忘记使用完数据库之后一定要关闭游标和数据库
/**
*
* 游标 数据库的关闭操作
*
* @see android.app.Activity#onDestroy()
* @author: 刘斌 - liubin@bamabest.com
* @date: Created on 2012-6-25 下午3:24:38
*/
public void closeDB(Cursor cursor, SQLiteDatabase db) {
if (cursor != null) {
cursor.close();
cursor = null;
}
if (db != null && db.isOpen()) {
db.close();
db = null;
}
}
一个完整操作的代码
public synchronized void updateAdvice(Advice advice, String userId) {
try {
db = dbHelper.getWritableDatabase();
db.execSQL("update advice set flag=? where userId = ? and signId = ? and time = ?", new Object[] {
advice.flag, userId, advice.signId, advice.adviceDate });
} catch (Exception e) {
e.printStackTrace();
} finally {
closeDB(null, db);
}
}
2.SD卡存储
sd卡中前面加点.的文件是隐藏文件
系统缓存路径Environment.getDataDirectory()+ "/data/