2012-07-04 195 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