получить набор результатов из предварительного заявления в Android - PullRequest
0 голосов
/ 05 мая 2011

Я создал подчиненное заявление, данное ниже.Теперь мой вопрос, как получить набор результатов запроса.Вот мой код:

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();

Это работает без каких-либо ошибок.Но я хочу, чтобы набор результатов данного запроса.Пожалуйста, помогите ..

1 Ответ

2 голосов
/ 01 сентября 2011

Набор результатов недоступен, по крайней мере, на данный момент, в sqlite. Все зависит от того, какую именно информацию вы хотите получить из ResultSet или ResultSetMetaData и т. Д., Но есть и другие способы получения почти такой же информации.

Вы можете получить подробную информацию о столбцах в таблице со следующим, используемым, как если бы это был SELECT, и информация о столбцах будет представлена:

pragma table_info(myTable) ;

См. http://www.sqlite.org/pragma.html#pragma_table_info для получения дополнительной информации.

Если вы хотите получить информацию о конкретном SELECT, вы можете получить информацию из полученного Курсора. Смотри http://developer.android.com/reference/android/database/Cursor.html

Например, если вам нужен тип данных для столбца, вы можете использовать метод getType () в более новых версиях Android или использовать серию функций «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);
                    }
                }
            }

Другая информация доступна аналогичным образом, в зависимости от ваших потребностей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...