Android存储

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 ");



插入数据    建议用数据库直接定义好的方法,和查询数据比较不用写SQL语句非常方便

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/


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值