为什么execSQL接受Object []和原始查询字符串[]

时间:2013-01-04 22:01:16

标签: java android sqlite

我想有一个选项可以调用'rawQuery'并传入一个Integers列表,但看起来我不能:所有'rawQuery'方法都需要字符串数组......

为什么呢?我可以为每个传递的int对象调用'toString',但我在这里看不到任何逻辑。为什么Google不提供接受对象列表的rawQuery?

对此有任何限制或约束吗?

可能我错过了什么?

谢谢。

2 个答案:

答案 0 :(得分:0)

可能是因为rawQuery不是首选的查询方法。由于sqlite列基本上没有类型,因此他们可能不希望假设在你传递的任何内容上调用toString。

  

SQLite支持列上“类型亲和力”的概念。类型   列的亲和性是存储在其中的数据的推荐类型   柱。这里的重要想法是建议使用类型,而不是   需要。任何列仍然可以存储任何类型的数据。就是这样   根据选择,某些列将更喜欢使用一个存储类   在另一个。列的首选存储类称为其   “亲和力”。

您是否有理由使用rawQuery代替execSQL

答案 1 :(得分:-1)

参数列表中没有接受复杂对象,如参数 bindArgs 的文档中所述:

参数

sql 要执行的SQL语句。不支持以分号分隔的多个语句。

bindArgs bindArgs中仅支持byte [],String,Long和Double。

http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#execSQL(java.lang.String, java.lang.Object[])