Невозможно выбрать столбцы из базы данных с помощью курсора Android - PullRequest
0 голосов
/ 02 декабря 2010

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

    // 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?Нет предупреждений отладчика, когда я делаю это.

Спасибо!

1 Ответ

0 голосов
/ 02 декабря 2010

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

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

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