以插入数据为例,有三种方法:
1)直接拼接SQL语句,执行execSQL方法;
2)借用ContentValues进行插入;
3)使用compileStatement进行插入;
1)直接拼接SQL语句,执行execSQL方法
String sql = "create table msgTable(uid INTEGER NOT NULL, msg TEXT NOT NULL)";
db.execSQL(sql);
缺点:存在SQL注入危险;
源码分析:
execSQL 调用关系如下:
public void execSQL(String sql) throws SQLException {
executeSql(sql, null);
}
public void execSQL(String sql, Object[] bindArgs) throws SQLException {
if (bindArgs == null) {
throw new IllegalArgumentException("Empty bindArgs");
}
executeSql(sql, bindArgs);
}
private int executeSql(String sql, Object[] bindArgs) throws SQLException {
if (DatabaseUtils.getSqlStatementType(sql) == DatabaseUtils.STATEMENT_ATTACH) {
disableWriteAheadLogging();
mHasAttachedDbs = true;
}
SQLiteStatement statement = new SQLiteStatement(this, sql, bindArgs);
try {
return statement.

本文详细介绍了在Android中插入SQLite数据的三种方式:直接拼接SQL语句、使用ContentValues以及通过compileStatement。每种方法的执行过程和优缺点都有所阐述,特别强调了ContentValues和compileStatement如何避免SQL注入问题,并且最终都会转化为SQLiteStatement执行。
最低0.47元/天 解锁文章
9066

被折叠的 条评论
为什么被折叠?



