开发具有数据库功能的Android应用程序。使用名为DatabaseHelper的内部类创建DatabaseManager类与数据库通信。虽然我在实施方面遇到了一些问题,但如果有人能提供一点清晰度,我将不胜感激。
示例,在活动中
DatabaseManager db = new DatabaseManager(this);
db.open();
db.insert(some_values);
DatabaseManager类
public class DatabaseManager{
// Database details
private static final String DATABASE_NAME = "Test Database";
// Table Names
private static final String USER_TABLE = "User";
// Table columns
public static final String KEY_ROWID = "_id";
public static final String KEY_USERNAME = "username";
private static final int DATABASE_VERSION = 1;
private static final String USER_CREATE =
"create table " + USER_TABLE +
" (_id integer primary key autoincrement not null, " +
"username text not null);";
public DatabaseHelper helper;
public SQLiteDatabase the_db;
public Context context;
public DatabaseManager(Context c){
this.context = c;
helper = new DatabaseHelper(context);
}
public void open(){
helper.open();
}
class DatabaseHelper extends SQLiteOpenHelper{
DatabaseHelper(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db){
db.execSQL(USER_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public DatabaseManager(Context c){
this.context = c;
helper = new DatabaseHelper(context);
}
// Makes the_db available to the Manager class.
public DatabaseManager open() throws SQLException{
this.the_db = this.helper.getWritableDatabase();
return this;
}
public void close(){
helper.close();
}
public long insertFacebook(String uname, String pwd){
ContentValues content = new ContentValues();
content.put(KEY_USERNAME, uname);
content.put(KEY_PASSWORD, pwd);
return the_db.insertOrThrow(FACEBOOK_TABLE, null, content);
}}
答案 0 :(得分:2)
SQLiteOpenHelper:
用于管理数据库创建和版本管理的帮助程序类。
您创建了一个实现 onCreate(SQLiteDatabase), onUpgrade(SQLiteDatabase,int,int)和可选 onOpen(SQLiteDatabase)的子类,以及如果数据库存在,则此类负责打开数据库,如果不存在则创建数据库,并根据需要进行升级。事务用于确保数据库始终处于合理状态。
此类使 ContentProvider 实现可以在第一次使用之前推迟打开和升级数据库,以避免在长时间运行的数据库升级时阻止应用程序启动。