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等方法。可防止注入攻击

上一篇:hdu 1253 胜利大逃亡(BFS)


下一篇:DDoS-Deflate安装及配置