我知道我们必须使用PRAGMA user_version;这个查询来获取db版本。 但execSQL不能使用此查询。如何在android中编写此查询以从.db文件中获取db版本
答案 0 :(得分:3)
您可以使用SQLiteDatabase#getVersion()
,而isnull
又实现为:
public int getVersion() {
return ((Long) DatabaseUtils.longForQuery(this, "PRAGMA user_version;", null)).intValue();
}
rawQuery()
通常也适用于您对结果行感兴趣的SQL。
答案 1 :(得分:0)
您的问题是execSQL
不允许返回值/数据。按照: -
执行一个非SELECT或任何其他SQL的SQL语句 返回数据的语句。 SQLiteDatabase - execSQL
您可以使用getVersion
方法将版本号作为int返回。或者,你可以使用rawQuery
方法返回一个Cursor,你可以从中提取值,例如。
public int myGetversion() {
int rv = 0;
Cursor csr = this.rawQuery("PRAGMA user_version");
if csr.moveToFirst() {
rv = csr.getInt(0);
}
csr.close;
return rv;
}
this
eqautes到SQLIteDatabase。 或者您可以使用DatabaseUtils getVersion
方法复制longForQuery
本身所执行的操作。
e.g。
public int myGetVersion() {
return ((Long) DatabaseUtils.longForQuery(this, "PRAGMA user_version;", null)).intValue();
}