J'essaie simplement de récupérer chaque ligne actuellement dans ma base de données SQLite sur mon Android et de récupérer chaque colonne de chaque ligne. Je crois que les données sont réellement dans la base de données, parce que j'appelle une fonction séparée DataHelper.selectAll() pour imprimer à Log toutes les données. Les données que j'attends correctement apparaissent dans LogCat dans Eclipse. Si c'est important, le programme DataHelper.java que j'utilise essentiellement se trouve ici: http://www.screaming-penguin.com/node/7742. Je posterai le code pertinent ci-dessous. Le truc important est dans doPost().Impossible de sélectionner des colonnes de la base de données avec le curseur Android
// 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;
}
Maintenant, ce qui est étrange à ce sujet est dans mon LogCat il imprimé avec succès les lignes complètes (comme une chaîne), donc je sais que je suis en mesure d'accéder à la base de données. Les valeurs de RSSI que j'attends n'êtes pas connecté, au lieu je reçois:
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
Je suis à une perte, parce que beaucoup d'exemples en ligne toutes les données d'accès de la même façon. Est-ce que cela a à voir avec le fait que je suis dans un OnClickListener? Il n'y a pas d'avertissement de débogueur quand je fais ceci.
Merci!