Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Worldmen
2 / 2 / 1
Регистрация: 31.08.2013
Сообщений: 217
Завершенные тесты: 1
#1

Ошибка в запросе к БД - Программирование Android

14.10.2015, 21:32. Просмотров 270. Ответов 2
Метки нет (Все метки)

Есть класс для работы с БД, в нем организовал метод (GetUsers) выборки пользователей:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
public class DBHelper extends SQLiteOpenHelper {
 
    final String LOG_TAG = "myLogs";
    private SQLiteDatabase db;
    private String tabUsers = "Users";
 
    public DBHelper(Context context) {
        super(context, "eng_db.db", null, 1);
    }    
 
   // Список всех юзеров
    public ArrayList<String> GetUsers(SQLiteDatabase db){
        this.db = db;
        if (this.db.isOpen()){
            Log.d(LOG_TAG, "БД - открыта. -----------------");
        }else {Log.d(LOG_TAG, "БД - закрыта. -----------------");}
 
        ArrayList <String> Users = new ArrayList<>();
        Cursor cur;
        //String sql = "SELECT _id, user, date_in FROM users";
        cur = this.db.query(tabUsers, null, null, null, null, null, null);
        while (!cur.isAfterLast()){
            Users.add( cur.getString( cur.getColumnIndex("user")) ); // ТУТ РУГАЕТСЯ
            Log.d(LOG_TAG, "----- cur.getColumnIndex = " + cur.getString( cur.getColumnIndex("user")) );
            cur.moveToNext();
        }
        cur.close();
        return Users;
    }
 
    @Override
    public void onCreate(SQLiteDatabase db) {
        Log.d(LOG_TAG, "--- onCreate database ---");
 
        db.execSQL("DROP TABLE IF EXISTS Users");
        db.execSQL("DROP TABLE IF EXISTS Words");
        db.execSQL("DROP TABLE IF EXISTS Category");
 
        // создаем таблицу Пользователей
        db.execSQL("CREATE TABLE [users] (" +
                "[_id] integer NOT NULL PRIMARY KEY AUTOINCREMENT, " +
                "[user] nvarchar(50) NOT NULL," +
                "[date_in] datetime )" );
  ................
  }
Вызываю метод GetUsers так:
Java
1
2
3
        dbHelper = new DBHelper(this);
        db = dbHelper.getWritableDatabase();
        ArrayList<String> arrayUsers = dbHelper.GetUsers(db);   //- UsersActivity.java:30 // список пользователей
Лог ошибки:
Кликните здесь для просмотра всего текста
10-14 18:13:42.532 312-577/? D/dalvikvm: GC_FOR_ALLOC freed 278K, 17% free 10940K/13063K, paused 23ms, total 38ms
10-14 18:13:42.692 125-330/? W/AudioWatchdog: Insufficient CPU for load: expected=50.0 actual=152.2 ms; underruns=194 logs=29
10-14 18:13:43.200 1529-1529/? I/Choreographer: Skipped 78 frames! The application may be doing too much work on its main thread.
10-14 18:13:43.792 1529-1529/? I/dalvikvm: Could not find method android.content.res.Resources.getDrawable, referenced from method android.support.v7.internal.widget.ResourcesWrapper.getDrawable
10-14 18:13:43.792 1529-1529/? W/dalvikvm: VFY: unable to resolve virtual method 379: Landroid/content/res/Resources;.getDrawable (ILandroid/content/res/Resources$ThemeLandroid/graphics/drawable/Drawable;
10-14 18:13:43.808 1529-1529/? D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002
10-14 18:13:43.808 1529-1529/? I/dalvikvm: Could not find method android.content.res.Resources.getDrawableForDensity, referenced from method android.support.v7.internal.widget.ResourcesWrapper.getDrawableForDensity
10-14 18:13:43.836 1529-1529/? W/dalvikvm: VFY: unable to resolve virtual method 381: Landroid/content/res/Resources;.getDrawableForDensity (IILandroid/content/res/Resources$ThemeLandroid/graphics/drawable/Drawable;
10-14 18:13:43.840 1529-1529/? D/dalvikvm: VFY: replacing opcode 0x6e at 0x0002
10-14 18:13:43.900 1529-1529/? D/myLogs: БД - открыта. -----------------
10-14 18:13:43.904 1529-1529/? D/AndroidRuntime: Shutting down VM
10-14 18:13:43.916 1529-1529/? W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0xa6298288)
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: FATAL EXCEPTION: main
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.stetsenko.english_03/com.stetsenko.english_03.UsersActivity}: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at android.app.ActivityThread.access$600(ActivityThread.java:130)
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at android.os.Looper.loop(Looper.java:137)
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:4745)
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:511)
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method)
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at android.database.AbstractCursor.checkPosition(AbstractCursor.java:418)
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at com.stetsenko.english_03.DBHelper.GetUsers(DBHelper.java:40)
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at com.stetsenko.english_03.UsersActivity.onCreate(UsersActivity.java:30)

10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at android.app.Activity.performCreate(Activity.java:5008)
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)*
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at android.app.ActivityThread.access$600(ActivityThread.java:130)*
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)*
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)*
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at android.os.Looper.loop(Looper.java:137)*
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:4745)*
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)*
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:511)*
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)*
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)*
10-14 18:13:43.916 1529-1529/? E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method)*
10-14 18:13:43.948 312-323/? W/ActivityManager: Force finishing activity com.stetsenko.english_03/.UsersActivity
10-14 18:13:43.952 312-323/? W/ActivityManager: Force finishing activity com.stetsenko.english_03/.MainActivity
10-14 18:13:44.452 312-325/? W/ActivityManager: Activity pause timeout for ActivityRecord{536943a4 com.stetsenko.english_03/.UsersActivity}
10-14 18:13:44.828 312-366/? I/qtaguid: Failed write_ctrl(s 1 10021) res=-1 errno=1
10-14 18:13:44.832 312-366/? W/NetworkManagementSocketTagger: setKernelCountSet(10021, 1) failed with errno -1
10-14 18:13:44.944 496-496/? W/EGL_genymotion: eglSurfaceAttrib not implemented
10-14 18:13:45.228 496-496/? D/OpenGLRenderer: TextureCache::get: create texture(0xb956cef8): name, size, mSize = 408, 1200, 692688

Не могу понять, что в этой строке не правильно:
Java
1
Users.add( cur.getString( cur.getColumnIndex("user")) ); // ТУТ РУГАЕТСЯ
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2015, 21:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка в запросе к БД (Программирование Android):

Ошибка в запросе - Программирование Android
Нужен такой запрос: SELECT WORDRUS FROM WORd_level3 WHERE WORDENG=&quot;borrow&quot; (слово к примеру). При выполнении такого запроса в DB Browser...

Возникает ошибка при запросе - Программирование Android
package com.example.ks; /** * Created by Denis on 08.09.2016. */ import java.util.ArrayList; import java.util.List; ...

Ошибка в POST запросе, retrofit2 googledrive - Программирование Android
Здравствуйте, хочу выполнить запрос На сохранение картинки на сервер GoogleDrive Api с помощью Retrofit2, помогите найти ошибку, ошибка в...

Ошибка в запросе на Редактирование: ошибка синтаксиса (пропущен оператор) - C#
string strSQL1 = &quot;UPDATE SET .='&quot; + dataGridView1.CurrentRow.Cells.Value.ToString() + &quot;',.='&quot; +...

C#- ошибка в запросе на вставку: ошибка синтаксиса - C#
private void button2_Click(object sender, EventArgs e) { goods = null; goods = new ADODB.Recordset();...

Ошибка в запросе - 1С
Здравствуйте, помогите с ошибкой в запросе, при отладке выдает ошибку: Ошибка чтения значения, вот код: Запрос = Новый Запрос; ...

2
schdub
2959 / 1304 / 239
Регистрация: 19.01.2009
Сообщений: 3,424
Завершенные тесты: 1
14.10.2015, 22:17 #2
Worldmen, а в базе пусто? Вы скорее всего указали не верное условие выхода из while.
Вот пример использования курсора:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
Cursor c = sampleDB.rawQuery("SELECT FirstName, Age FROM mytable " +
           "where Age > 10 LIMIT 5", null);
 
if (c != null ) {
    if  (c.moveToFirst()) {
        do {
            String firstName = c.getString(c.getColumnIndex("FirstName"));
            int age = c.getInt(c.getColumnIndex("Age"));
            results.add("" + firstName + ",Age: " + age);
        }while (c.moveToNext());
    }
}
c.close();
1
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,654
Завершенные тесты: 1
15.10.2015, 09:43 #3
Цитата Сообщение от Worldmen Посмотреть сообщение
db.execSQL("CREATE TABLE [users] (" +
"[_id] integer NOT NULL PRIMARY KEY AUTOINCREMENT, " +
"[user] nvarchar(50) NOT NULL," +
"[date_in] datetime )" );
А если убрать тут квадратные скобки?
Цитата Сообщение от schdub Посмотреть сообщение
if (c != null ) {
if (c.moveToFirst()) {
do {
String firstName = c.getString(c.getColumnIndex("FirstName"));
int age = c.getInt(c.getColumnIndex("Age"));
results.add("" + firstName + ",Age: " + age);
}while (c.moveToNext());
}
}
А зачем так сложно? Разве не достаточно такого?
Java
1
2
3
while(cursor.moveToNext()){
    //some code
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2015, 09:43
Привет! Вот еще темы с ответами:

Ошибка в запросе - PHP БД
Ошибка: Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\home\w\www\index.php on line 55 $count =...

Ошибка в запросе - C#
Есть запрос string s = &quot;select a.Код, a.Наименование, avg(b.) as &quot;; s += &quot;from Налогоплательщики as a right outer join Финансы as b on...

Ошибка в запросе к БД - C#
Ребята помогите пожалуйста, уже завтра сдача курсача. Уже второй день мучаюсь, пытаюсь исправить ошибку INSERT INTO при попытке изменить...

Ошибка в запросе - MS Access
Всем привет, есть запрос такого вида SELECT ., ., . FROM WHERE = '{0}'; Просит ввести наименование раздела, ввожу что полное...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru