Ceci est le code pour obtenir la table RECORD du SQLiteDatebase
. Dans le try block
quelque chose ne va pas et il jette toujours le SQLiteException
. Tout ce que j'essaie de faire ici est de convertir chaque ligne de la table "RECORD" en une chaîne et l'ajouter à un ArrayList
, ensuite connecter le tableau au ArrayAdapter
, et enfin utiliser ListView
pour afficher le tableau.Android SQLiteException. Pourquoi cela arrive-t-il?
package com.example.tommy.stop_watch_real;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.CursorAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
import java.util.ArrayList;
public class RecordList extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_record_list);
ListView temp = (ListView) findViewById(R.id.recordList);
ArrayList<String> arrayList = new ArrayList<String>();
ArrayAdapter<String> adapter;
**try {
SQLiteOpenHelper dataBaseHelper = new DataBaseHelper(this);
SQLiteDatabase db = dataBaseHelper.getReadableDatabase();
Cursor cursor = db.query("RECORD", new String[] {"_id, DATE, MINUTES"}, null, null,null,null,null);
while (cursor.moveToFirst()){
String id = Integer.toString(cursor.getInt(0));
String date = cursor.getString(1);
String minutes = Integer.toString(cursor.getInt(2));
String finalValue = id + "|" + date + "|" + minutes;
arrayList.add(finalValue);
}
adapter=new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
arrayList);
temp.setAdapter(adapter);
cursor.close();
db.close();}**
catch (SQLiteException e) {
Toast.makeText(RecordList.this, "Database not available", Toast.LENGTH_LONG).show();
}
}
}
Voici le code pour mon datebaseHelper:
class DataBaseHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "Record"; // name of the database
private static final int DB_VERSION = 1; //Version
DataBaseHelper (Context context){
super(context, DB_NAME, null, DB_VERSION);
}
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE RECORD ("
+ "_id INTEGER PRIMARY KEY AUTOINCERMENT, "
+ "DATE STRING," //careful
+ "MINUTES INTEGER" + ");"
);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
//no need to worry about this yet.
}
}
Le toast
montre toujours, ce qui signifie quelque chose ne va pas dans le try block
. Je viens de commencer le développement Android il y a une semaine et je ne sais pas ce qui s'est mal passé dans mon code. Ce serait génial si vous pouviez me donner une direction.
Merci à l'avance.
No 1: lire le message exception –
après stacktrace –
Dans votre La classe 'DBHelper' Date a le type ** STRING **? Comment ça? Vérifiez cela: https: //dev.mysql.com/doc/refman/5.7/en/string-types.html – Mandy8055