现在的位置: 首页 > 综合 > 正文

Android笔记003_Android的sql里面的占位符的理解

2017年10月05日 ⁄ 综合 ⁄ 共 964字 ⁄ 字号 评论关闭
  1. ndroid提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,使用该类可以完成对数据进行添加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)操作(这些操作简称为CRUD)。对SQLiteDatabase的学习,我们应该重点掌握execSQL()和rawQuery()方法。 execSQL()方法可以执行insert、delete、update和CREATE TABLE之类有更改行为的SQL语句; rawQuery()方法用于执行select语句。 
  2. execSQL()方法的使用例子: 
  3. SQLiteDatabase db = ....; 
  4. db.execSQL("insert into person(name, age) values('测试数据', 4)"); 
  5. db.close(); 
  6. 执行上面SQL语句会往person表中添加进一条记录,在实际应用中, 语句中的“测试数据”这些参数值会由用户输入界面提供,如果把用户输入的内容原样组拼到上面的insert语句, 当用户输入的内容含有单引号时,组拼出来的SQL语句就会存在语法错误。要解决这个问题需要对单引号进行转义,也就是把单引号转换成两个单引号。有些时候用户往往还会输入像“ & ”这些特殊SQL符号,为保证组拼好的SQL语句语法正确,必须对SQL语句中的这些特殊SQL符号都进行转义,显然,对每条SQL语句都做这样的处理工作是比较烦琐的。 SQLiteDatabase类提供了一个重载后的execSQL(String sql, Object[] bindArgs)方法,使用这个方法可以解决前面提到的问题,因为这个方法支持使用占位符参数(?)。使用例子如下: 
  7. SQLiteDatabase db = ....; 
  8. db.execSQL("insert into person(name, age) values(?,?)", new Object[]{"测试数据", 4});  
  9. db.close(); 
  10. execSQL(String sql, Object[] bindArgs)方法的第一个参数为SQL语句,第二个参数为SQL语句中占位符参数的值,参数值在数组中的顺序要和占位符的位置对应。 
  11. */ 

抱歉!评论已关闭.