Android Sqlite 使用 注意事项

1.Sqlite 写操作 并不是线程安全的

1.在多进程或多线程中使用sqlite,同时操作同一个数据库的话,会导致异常抛出。
2.不同线程或实例化多个SqliteOpenhelper来操作同一个数据库,也会导致同样的问题。
3.但不同线程使用同一个sqliteopenhelper来获取SqliteDatabase进行操作的话,是可以的。

2.Sqlite 读操作是线程安全的

多个线程或进程读取同一个数据库的内容,是可以的。

***以上这些都与Sqlite的事物和锁机制有关
关于事物与锁,详见http://www.cnblogs.com/busymilk/p/4766855.html。

3.直接使用SqliteDatabase的execSQL(String sql)有可能会导致注入攻击,比如

delete from user where name='a';

有可能就变成
delete from user where name='a' or 1=1;

所以,最好使用executeSql(String sql, Object[] bindArgs);
或者SqliteDatabase提供的insert,update,delete等方法。可防止注入攻击

posted @ 2015-08-28 17:15  隐没  阅读(966)  评论(0编辑  收藏  举报