android SQLite中的一个疑问
Cursor cursor = db.rawQuery("select * from person where name like ? and age=?", new String[]{"张三", "4"});
这是一个查询语句。疑问是:定义中age的类型是integer,为什么后面的是string类型的数组,而不是Object数组,即new Objece[]{"张三",4}.求解,谢谢
追问:后来看了下帮助文档。
貌似execSQL()方法中传入的参数就是(string sql,Object[] bindArgs)
而rawQuery()方法中传入的参数就是(String sql, String[] selectionArgs)
这样疑问就解决了。
答案:这里SQLite以SQL语言为交换格式。
每一句SQL是一段文本。文本就需要把int float的基础类型以其文本形态表示出来
等同于直接输入
"select * from person where name like "+"张三"+"and age=" +"4"
我故意用+号说明字符串/文本的连接动作
这里用?代入符是防止SQL注入的设计
其他:这个是Google这样设计的,都以字符串的形式传入,即使你传入的是Object,他在最后进行SQL语句处理的时候还是要变成String
上一个:sqlite和mysql有关系吗? 能代替mysql运行织梦程序吗?
下一个:C# sqlite数据库问题