辽宁朝阳网站建设,安徽做网站的公司,外国s网站建设,游戏ui设计是什么execSQL 不支持用分号分隔一次执行多个 SQL 语句#xff0c;虽然理论上可以实现。但是#xff0c;并不建议这样做#xff0c;因为这可能会导致潜在的 SQL 注入漏洞。相反#xff0c;建议使用 execSQL 或 rawQuery 分别执行每个语句。 在下面的代码块中#xff0c;我们正在…execSQL 不支持用分号分隔一次执行多个 SQL 语句虽然理论上可以实现。但是并不建议这样做因为这可能会导致潜在的 SQL 注入漏洞。相反建议使用 execSQL 或 rawQuery 分别执行每个语句。 在下面的代码块中我们正在使用 execSQL 分别执行三个单独的 SQL 语句创建表、向表中插入数据以及从表中查询数据。 如果需要一次执行多个语句可以使用事务来确保所有语句都以原子方式执行。以下是一个示例
SQLiteDatabase db SQLiteDatabase.openOrCreateDatabase(test.db, null);try {db.beginTransaction();db.execSQL(CREATE TABLE IF NOT EXISTS user( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER));db.execSQL(INSERT INTO user(name, age) VALUES(Tom, 18));Cursor cursor db.rawQuery(SELECT * FROM user, null);while (cursor.moveToNext()) {int id cursor.getInt(cursor.getColumnIndex(id));String name cursor.getString(cursor.getColumnIndex(name));int age cursor.getInt(cursor.getColumnIndex(age));Log.d(TAG, id: id , name: name , age: age);}cursor.close();db.setTransactionSuccessful();
} finally {db.endTransaction();db.close();
}说明
在此示例中所有三个 SQL 语句都在同一个事务内执行。beginTransaction 方法开始事务setTransactionSuccessful 方法将事务标记为成功。 如果在调用 setTransactionSuccessful 之前抛出异常则事务会自动回滚。endTransaction 方法结束事务 如果调用了 setTransactionSuccessful则提交更改否则回滚更改。从而保证数据一致性。