2012-10-26 110 views
1

我有問題與sqlite數據庫。我想用現有的記錄在android中創建數據庫。 創建數據庫:如何使用現有數據在android中創建數據庫?

public class PrzyslowiaArabskie { 

private static final String TABLE_NAME = "tabela_przyslowia"; 
private static final String DATABASE_NAME = "przyslowiadb"; 
private static final int DATABASE_VERSION = 1; 
public static final String KEY_ID = "id"; 
public static final String KEY_PRZYSLOWIE = "przyslowie"; 

private DbHelper myHelper; 
private final Context myContext; 
private SQLiteDatabase myDatabase; 




private static class DbHelper extends SQLiteOpenHelper { 

    public DbHelper(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     // TODO Auto-generated method stub 
     db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + 
        KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + 
       KEY_PRZYSLOWIE + " TEXT NOT NULL);"); 


    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     // TODO Auto-generated method stub 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); 

     onCreate(db); 
    } 

} 
public PrzyslowiaArabskie(Context c) { 
    myContext = c; 
} 
public PrzyslowiaArabskie open() { 
    myHelper = new DbHelper(myContext); 
    myDatabase = myHelper.getWritableDatabase(); 
    return this; 
} 
public void close() { 
    myHelper.close(); 
} 
public long createEntry(String przyslowie) { 
    ContentValues cv = new ContentValues(); 
    cv.put(KEY_PRZYSLOWIE, przyslowie); 
    return myDatabase.insert(TABLE_NAME, null, cv); 

} 
public String getData() { 
    // TODO Auto-generated method stub 
    String[] columns = new String[] { KEY_ID, KEY_PRZYSLOWIE }; 
    Cursor c = myDatabase.query(TABLE_NAME, columns, null, null, null, null, null); 
    String result = ""; 

    int iRow = c.getColumnIndexOrThrow(KEY_ID); 
    int iPrzyslowie = c.getColumnIndexOrThrow(KEY_PRZYSLOWIE); 


    for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { 
     result = result + c.getString(iRow) + " " + c.getString(iPrzyslowie) + "\n"; 
    } 

    return result; 
} 

}

我能做些什麼,如果我想與現有的記錄創建數據庫。如何與創建數據庫一起添加記錄?

+0

http://stackoverflow.com/questions/9109438/how-to-use-an-existing-database-with-an-android-application/9109728#9109728 –

回答

0

你只需要在onCreate()方法插入值,你已經創建了表後:

@Override 
public void onCreate(SQLiteDatabase db) { 
    db.execSQL("CREATE TABLE " + TABLE_NAME + " (" 
     + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " 
     + KEY_PRZYSLOWIE + " TEXT NOT NULL);"); 

    ContentValues values = new ContentValues(); 
    values.put(KEY_PRZYSLOWIE , "My text"); 

    db.insert(TABLE_NAME, null, values); 
    // ... etc... 
} 

作爲一個側面說明,如果你的數據庫是比這個簡單的例子更復雜,你可能想將表創建和初始化委託給其他方法甚至類。

+0

以這種方式:db.insert(「my text bla bla「)?或者如何? – Tomeksss

+0

@Tomeksss更新插入示例 – JRaymond

+0

我還有一個問題。點擊後如何從數據庫中顯示隨機記錄。我的代碼:} \t \t \t公共字符串的getData(){ \t \t // TODO自動生成方法存根 \t \t字符串[]列=新的String [] {KEY_ID,KEY_PRZYSLOWIE}; Cursor c = myDatabase.query(TABLE_NAME,columns,KEY_ID,null,null,null,null); \t \t if(c!= null && c。moveToFirst()){ \t \t \t do { \t \t \t String data = c.getString(1); \t \t \t返回數據; \t \t \t}而(c.moveToNext()); \t \t \t \t \t \t \t} \t \t返回NULL; }} – Tomeksss

1

您可以創建一個文件,其中包含插入數據並將該文件放入資產文件夾所需的所有插入語句。在創建數據庫之後,取出文件的每一行並通過rawQuery運行它。

還有其他方法,如其他答案所示。

1

1)如果你已經有了數據,使用firefox的sqlite管理器可以更容易地插入數據。 2)如果你有其他形式的數據,如「CSV」或「XML」,那麼你可以簡單地使用Firefox的sqlite管理器將該文件導入到你的表中。

3)或者,如果您必須從您的應用程序插入數據,那麼最好創建一個bean對象,將其發送到數據庫輔助類並使用任何查詢將值插入到表中。

作爲一個例子,

void addStatesModel(StatesModel states) { 
    SQLiteDatabase db = this.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 
    values.put(KEY_NAME, states.getName()); // StatesModel Name 
    values.put(KEY_CODE, states.getCode()); // StatesModel Phone 

    // Inserting Row 
    db.insert(TABLE_STATES, null, values); 
    db.close(); // Closing database connection 
    } 

在此,我通過狀態作爲abean對象的方法addStatesModel。

4)或者,如果你有一個單獨的數據庫中的數據,你可以連接兩個數據庫,然後運行復制命令將數據從一個表傳輸到另一個。或者只需使用SQLite管理器,您可以將表從一個數據庫導出到csv文件或xml文件,然後在表中導入該文件。

+0

的OP需要數據庫中所創建的android設備,而不是在其他某臺電腦上;這就是android如何做數據庫 - 在飛行中創建 – JRaymond

+0

Firefox提供了一個名爲SQLite Manager的工具來管理Android數據庫,我們可以在android中創建數據庫,並可以通過該工具執行查詢。這就是我發佈的內容。 –

相關問題