我已经创建了下面给出的编译声明。现在我的问题是如何获取查询的结果集。 这是我的代码:
DataBaseHelper dbHelper=new DataBaseHelper(context);
dbHelper.createDataBase();
dbHelper.openDataBase();
SQLiteDatabase db = dbHelper.getWritableDatabase();
SQLiteStatement st=db.compileStatement("select taskid from task where taskdate=?");
st.bindString(1,"2011/09/05");
st.execute();
这没有任何错误。但我想要给定查询的结果集。请帮忙..
答案 0 :(得分:2)
结果集在sqlite中至少现在不可用。这完全取决于您想要从ResultSet或ResultSetMetaData等获取哪些信息,但还有其他方法可以获得几乎相同的信息。
您可以使用以下内容获取有关表中列的详细信息,就像它是SELECT一样,并且将显示有关列的信息:
pragma table_info(myTable) ;
有关详细信息,请参阅http://www.sqlite.org/pragma.html#pragma_table_info。
如果需要有关特定SELECT的信息,可以从生成的Cursor中获取信息。见http://developer.android.com/reference/android/database/Cursor.html
例如,如果您想要列的数据类型,可以在较新版本的Android中使用getType()方法,或使用一系列“get”函数来确定至少可读的类型,这个可怕的代码:
Cursor curs = db.rawQuery(sqlStr, null);
int numberOfColumns = curs.getColumnCount();
String []colNames = new String[numberOfColumns];
String []colTypes = new String[numberOfColumns];
for(int iCol=1; iCol<=numberOfColumns; iCol++) {
colNames[iCol-1] = curs.getColumnName(iCol-1);
colTypes[iCol-1] = null; //curs.getType(iCol);
}
while(curs.moveToNext()) {
// this code assumes that the first row has the same data types
// as the rest of the rows
for(int iCol=1; iCol<=numberOfColumns; iCol++) {
String colName = colNames[iCol-1];
String colType = colTypes[iCol-1];
if(colType==null) {
// determine column type
try {
curs.getString(iCol-1);
colType = colTypes[iCol-1] = "text";
} catch (Exception ignore) {
try {
curs.getLong(iCol-1);
colType = colTypes[iCol-1] = "integer";
} catch (Exception ignore1) {
try {
curs.getFloat(iCol-1);
colType = colTypes[iCol-1] = "real";
} catch (Exception ignore2) {
try {
curs.getBlob(iCol-1);
colType = colTypes[iCol-1] = "blob";
} catch (Exception ignore3) {
colType = colTypes[iCol-1] = "other";
}
}
}
}
}
if("text".equals(colType)) {
... curs.getString(iCol-1);
} else
if("real".equals(colType)) {
... curs.getDouble(iCol-1);
} else
if("integer".equals(colType)) {
... curs.getInt(iCol-1);
} else { // unknown type
... colType+"-"+curs.getString(iCol-1);
}
}
}
根据您的需要,可以采用类似的方式提供其他信息。