2012-07-04 190 views
2

我在Android中看到了onCreate和onOpen方法与SQLite数据库管理之间的很多联系。在Android库中创建SQLite数据库

我是一名iOS开发人员,我试图“翻译”(可以这么说)我的可可库,以便它可以在Android上使用。我需要在运行时创建一个SQLite数据库。我没有活动 - 因为这是我创建的图书馆。看来我不能创建一个没有活动的数据库,这是正确的吗?

回答

1

要创建的SQLite数据库,你不要基本上需要在library.it的活动需要一个背景 !!, 您可以在库/类中的方法,基本上采取输入/参数的上下文和创建数据库。

此上下文可以从应用程序活动或服务或接收器传递。

+0

所以,我怎么能应付吗?我的需求非常简单,我有一个数据库类,我需要的第一件事是打开/创建一个数据库。我可以从哪里获得背景?知道我正在创建一个供他人使用的库。感觉就像我需要创建一个完整的android应用程序来实现这个工作? –

+0

不,你没有明白我的观点,数据库将在第一次调用构造函数sqliteopenhelper时创建,在那里你可以在构造函数参数中获得上下文。 是的数据库只会被创建,当一个应用程序调用你的库! – AAnkit

+0

当然这很好。将看看这个sqliteopenhelper。我得到的印象是第三方帮手类,我需要做的一切从零开始 –

0

我不明白为什么你应该无法在没有活动的情况下打开数据库。你需要扩展SQLiteOpenHelper。

public class MyDatabase { 
private final DatabaseHelper databaseHelper; 
private SQLiteDatabase db; 
private static final String DATABASE_NAME = "com.my.db"; 
private static final int DATABASE_VERSION = 1; 

public MyDatabase(Context context) { 
    databaseHelper = new DatabaseHelper(context); 
} 

private static class DatabaseHelper extends SQLiteOpenHelper { 

    DatabaseHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
       //use db.execSQL to create the database 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
       // use db.execSQL to update (modify) the database 
    } 
} 

public SQLiteDatabase open() throws SQLException { 
    db = databaseHelper.getWritableDatabase(); 
    return db; 
} 

}

+0

作为上下文,您可以传递您的应用程序上下文,以防需要使用该库的应用程序 – kingston