2010-12-02 6 views
0

Я пытаюсь просто захватить каждую строку в моей базе данных SQLite на моем Android и захватить каждый отдельный столбец из каждой строки. Я считаю, что данные действительно находятся в базе данных, потому что я вызываю отдельную функцию DataHelper.selectAll() для распечатки для регистрации всех данных. Данные, которые я ожидаю, отображаются правильно в LogCat в Eclipse. Если это важно, программа DataHelper.java, которую я использую в основном, находится здесь: http://www.screaming-penguin.com/node/7742. Я поставлю соответствующий код ниже. Важный материал в doPost().Невозможно выбрать столбцы из базы данных с Android Cursor

// from inside onCreate of Main (which extends activity)... 
    Button buttonPost = (Button) findViewById(R.id.buttonPost); 
    buttonPost.setOnClickListener(new OnClickListener() { 
    // doesn't actually post to website yet 
    public void onClick(View v) { 
     Log.d(TAG, "In onclicklistener."); 
     ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); 
     NetworkInfo mWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

     if (mWifi.isConnected()) { 
      Log.d(TAG, "Connected, calling doPost()!"); 
      if (doPost()) { 
         // ... 
       } 
      } 
    } 
    }); 

public boolean doPost() { 
    boolean outcome = false; 
    long ret = dh.insert(main.id++ + "," + "my test2" + "," + "5:4:2:3" + "," + -300 + "," + -300 + "," + -1 + "," + 
-70 + "," + 3 + "," + -3 + "," + main.device_id); 
    Log.d(TAG, "ret from static insert:" + ret); 

    Cursor cursor = this.dh.db.query(DataHelper.TABLE_NAME, 
     new String[] { "id", "rssi", "wap_id", "lat" }, 
     null, null, null, null, "id desc"); 
    Log.d(TAG, "Cursor column count: " + cursor.getColumnCount()); 
    if (cursor.moveToFirst()) { 
    do { 
     HttpPost post = new HttpPost(OUR_SERVER); 
     Log.d(TAG, "rssi index:" + cursor.getColumnIndex("rssi")); 
     Log.d(TAG, "the rssi: " + cursor.getInt(cursor.getColumnIndex("rssi"))); 
    } while (cursor.moveToNext()); 
    } 

    // release connection here? 
    cm.shutdown(); 

    if (cursor != null && !cursor.isClosed()) { 
     cursor.close(); 
    } 
return outcome; 
} 

Теперь то странно об этом в моей LogCat успешно распечатана полные строки (как строка), так что я знаю, что я в состоянии получить доступ к базе данных. Значения RSSI, что я ожидаю не авторизованы, вместо этого я получаю:

Cursor column count: 4 
id value: 6 
id index: 0 
rssi index:1 
the rssi: 0 
id value: 5 
id index: 0 
rssi index:1 
the rssi: 0 

Я в растерянности, потому что много онлайн примерах все данные доступа таким же образом. Это связано с тем, что я в OnClickListener? Когда я это делаю, никаких предупреждений отладчика нет.

Спасибо!

ответ

0

Nevermind. Оказывается, что класс DataHelper.java, который я использовал, просто вставляет все в первый столбец. Это было довольно противоречиво. Это то, что я получаю для поиска кода в Интернете и предполагая, что он делает правильные вещи.

Чтобы исправить это, я вручную написал полный оператор SQL, скомпилировал оператор и запустил его.

Смежные вопросы