在android/ios项目开发中,我们一般使用sqlite数据库来作为数据存储的介质。sqlite就不具体被忘了,这里重点备忘下sqlite的使用方式。
要存储的类型
class Person { public int age; public String name; }
CONTENTS
1)在程序私有路径里访问数据库
//打开或创建test.db数据库 SQLiteDatabase db = openOrCreateDatabase("test.db", Context.MODE_PRIVATE, null); db.execSQL("DROP TABLE IF EXISTS person"); //创建person表 db.execSQL("CREATE TABLE person (_id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR, age SMALLINT)"); Person person = new Person(); person.name = "john"; person.age = 30; //插入数据 db.execSQL("INSERT INTO person VALUES (NULL, ?, ?)", new Object[]{person.name, person.age}); person.name = "david"; person.age = 33; //ContentValues以键值对的形式存放数据 ContentValues cv = new ContentValues(); cv.put("name", person.name); cv.put("age", person.age); //插入ContentValues中的数据 db.insert("person", null, cv); cv = new ContentValues(); cv.put("age", 35); //更新数据 db.update("person", cv, "name = ?", new String[]{"john"}); Cursor c = db.rawQuery("SELECT * FROM person WHERE age >= ?", new String[]{"33"}); while (c.moveToNext()) { int _id = c.getInt(c.getColumnIndex("_id")); String name = c.getString(c.getColumnIndex("name")); int age = c.getInt(c.getColumnIndex("age")); Log.i("db", "_id=>" + _id + ", name=>" + name + ", age=>" + age); } c.close(); //删除数据 db.delete("person", "age < ?", new String[]{"35"}); //关闭当前数据库 db.close(); //删除test.db数据库 deleteDatabase("test.db");
2)通过使用SQLiteOpenHelper来访问私有路径数据库
备注:
当前不备份了,后续补上。
参考
【 http://www.open-open.com/bbs/view/1321250996593 】【 http://blog.csdn.net/liuhe688/article/details/6715983 】
【 http://www.cnblogs.com/TerryBlog/archive/2010/06/12/1757166.html 】
3)访问sd卡下面的数据库
访问sd卡下面的数据库也是使用SQLiteDatabase来实现,和本地路径的区别如下:
1)增加权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
2)修改获取db实例代码:
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase("/mnt/sdcard/testsd.db", null);
4)sqlite加密
如果我们要加密sqlite数据库,防止其他人访问,可以通过一个开源工程【 SQLCipher 】来实现。具体步骤备忘如下:
1)下载并放入工程中
SQLCipher有两个版本,商业版本和社区版本,我们使用社区版本。
访问下载地址【 http://sqlcipher.net/downloads/ 】,选择下载,如下图,注意下面的license。
2)解压缩后放入本地工程,如下图
3)替换相应的类
在java文件中引入头文件:
import net.sqlcipher.database.SQLiteDatabase;
调用时要注意先loadlibs,然后在打开数据库时增加密码就可以了。
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SQLiteDatabase.loadLibs(this); SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase("/mnt/sdcard/testsd2.db", "key", null); } }备注:
参考链接
【 http://blog.csdn.net/guolin_blog/article/details/11952409 】【 http://blog.csdn.net/zhuawami/article/details/9038003 】
【 http://my.eoe.cn/37547/archive/3568.html 】【 http://www.cnblogs.com/huangsheng/p/3343933.html 】
发表评论