我为数据库制作了简单的类,但是当我在真实设备上测试它时,应用程序关闭了!
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);
}
类数据访问对象:
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;
}
}
主要课程:
......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();
}
});
应用程序工作正常,直到我按下按钮,然后大声喊叫。首先我尝试在数据库中发送一些数据,应用程序关闭,然后我尝试创建数据库,但再次关闭!我应该对 android manifest 还是其他 .xml 进行一些更改?
提前致谢!!
怎么放logcat?