J'ai créé des classes simples pour la base de données, mais lorsque je l'ai testé sur un périphérique réel, l'application s'est arrêtée!La base de données Sqlite ne peut pas être créée
public class MySQLiteHelper extends SQLiteOpenHelper
{
public static final String TABLE_NAME = "caffe";
public static final String COLUMN_ID = "_id";
public static final String COLUMN_ARTIKAL = "artikal";
public static final String COLUMN_PRICE = "price";
public static final String COLUMN_AMOUNT = "amount";
//public static final String COLUMN_TIME = "date&time";
private static final String DATABASE_NAME = "caffe.db";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_CREATE = "create table " + TABLE_NAME + "(" + COLUMN_ID+ " integer primary key autoincrement," +COLUMN_ARTIKAL + " text not null"+ COLUMN_PRICE + " real not null"+ COLUMN_AMOUNT+" integer not null);";
public MySQLiteHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase database)
{
database.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
Log.w(MySQLiteHelper.class.getName(),
"Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
classe DataAccessObject:
public class BD_DAO
{
private SQLiteDatabase database;
private MySQLiteHelper dbHelper;
private String[] allColumns = {MySQLiteHelper.COLUMN_ARTIKAL,MySQLiteHelper.COLUMN_PRICE, MySQLiteHelper.COLUMN_AMOUNT};
public BD_DAO(Context context)
{
dbHelper = new MySQLiteHelper(context);
}
public void open() throws SQLException
{
database = dbHelper.getWritableDatabase();
}
public void close()
{
dbHelper.close();
}
public void createItem(Item item)
{
ContentValues values = new ContentValues();
values.put(MySQLiteHelper.COLUMN_ARTIKAL, item.getArtikal().toString());
values.put(MySQLiteHelper.COLUMN_PRICE, Double.toString(item.getPrice()).toString());
values.put(MySQLiteHelper.COLUMN_AMOUNT, Integer.toString(item.getAmount()).toString());
database.insert(MySQLiteHelper.TABLE_NAME, null,values);
}
public List<Item> getAllItems()
{
List<Item> items = new ArrayList<Item>();
Cursor cursor = database.query(MySQLiteHelper.TABLE_NAME, allColumns, null, null, null, null, null);
cursor.moveToFirst();
while (!cursor.isAfterLast())
{
Item cursorItem = cursorToItem(cursor);
items.add(cursorItem);
cursor.moveToNext();
}
cursor.close();
return items;
}
private Item cursorToItem(Cursor cursor)
{
Item item = new Item();
item.setArtikal(cursor.getString(1));
item.setPrice(cursor.getDouble(2));
item.setAmount(cursor.getInt(3));
return item;
}
}
Et classe principale:
......listview, some buttons......
Button DB=(Button)findViewById(R.id.DB);
DB.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
databasesource.open();
/*for (Item s:tableList)
{
databasesource.createItem(s);}*/
databasesource.close();
adapter.clear();
}
});
application fonctionne très bien jusqu'à ce que j'appuyez sur le bouton, et puis juste crier vers le bas. D'abord j'ai essayé d'envoyer des données en db, l'application s'est arrêtée, puis j'ai essayé de créer simplement db, mais j'ai encore arrêté! Dois-je faire quelques changements est-il manifeste d'android ou un autre .xml?
Merci d'avance !!
Comment mettre logcat?
Pourriez-vous s'il vous plaît montrer votre LogCat? – koesie10
mettez votre logcat .. – Riser
pourquoi ne pas avoir placé "," après ce '+ COLUMN_ARTIKAL +" texte non nul "' il devrait y avoir '+ COLUMN_ARTIKAL +" texte non nul, "' –