【发布时间】:2012-10-28 09:22:13
【问题描述】:
请任何人帮助我。我正在做时间表应用程序,所以使用数据库。
我的程序在这里崩溃:
DatabaseHandler dbHelper = new DatabaseHandler(this.getApplicationContext());
SQLiteDatabase db = dbHelper.getReadableDatabase(); //<---------------
Cursor cur=null;
cur = dbHelper.fetchAll(db, "SELECT * FROM timetable");
db.close();
我的 DatabaseHandler 类在这里:
public DatabaseHandler (Context context) {
super(context,DATABASE_NAME, null,DATABASE_VERSION);
}
//Creating Table
@Override
public void onCreate(SQLiteDatabase db){
String CREATE_TABLE = "CREATE TABLE" + TABLE_NAME + "("
+ KEY_ID + "INTEGER PRIMARY KEY," + KEY_SUBJECT_NAME
+ "TEXT," + KEY_SUBJECT_CODE + "TEXT," + KEY_SUBJECT_VENUE
+ "TEXT," + KEY_TIME + "INTEGER," + KEY_DAY + "INTEGER" + ")";
db.execSQL(CREATE_TABLE);
}
//Upgrading Database
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
// Create tables again
onCreate(db);
}
/**
* All CRUD(Create, Read, Update, Delete) Operations
*/
//Insert data
public void insertValues(int day, int time, String name, String code, String venue) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_DAY, day);
values.put(KEY_TIME, time);
values.put(KEY_SUBJECT_NAME, name);
values.put(KEY_SUBJECT_CODE, code);
values.put(KEY_SUBJECT_VENUE, venue);
db.insert(TABLE_NAME, null, values);
//closing the database connection
db.close();
}
public Cursor fetchAll(SQLiteDatabase db, String query){
Cursor cursor = db.rawQuery(query, null);
db.close();
return cursor;
}
}
如果有人可以帮助我,我会非常高兴,因为这是我的最后一年项目:)
【问题讨论】:
-
我只需要获取databse中的所有数据
-
这很简单,只需比较你的代码:dj-android.blogspot.in/2011/11/… & vogella.com/articles/AndroidSQLite/article.html & dj-android.blogspot.in/2012/10/…,网上有很多教程。
-
最好不将错误消息保密。
-
答案找到了!主要问题是 onCreate 方法中的查询,条目之间没有空格,太愚蠢了:)