2010-08-31 58 views
0

使用記事本教程並提出問題。當它使用字段rowid,title和body構建數據庫時 - 所有這三個都是私有靜態最終字符串。但是當像fetchnote()這樣的方法運行時,它使用一個很長的id來獲取音符。如果rowid是一個字符串,該方法如何獲得該ID?我想稍微修改一下這個教程並讓一個活動調用一個listactivity。列表活動將顯示數據庫中的所有內容,然後,當用戶單擊某個項目時,我想將該項目複製到新數據庫中,並將行標識發送回調用活動。但我不知道如何讓它將條目複製到新數據庫中,因爲本教程使用行ID進行調整,並且我的新數據庫將爲空。那有意義嗎?我對此很陌生。關於記事本教程的問題

回答

1

我覺得public static final Strings你談論這些是:

public class NotesDbAdapter { 
    public static final String KEY_TITLE = "title"; 
    public static final String KEY_BODY = "body"; 
    public static final String KEY_ROWID = "_id"; 
    ... 
} 

如果是這樣,那麼這些列名。列名稱是字符串,而不是這些列中的值。如果你看得更深一點,你會看到:

private static final String DATABASE_CREATE = 
     "create table notes (_id integer primary key autoincrement, " 
     + "title text not null, body text not null);"; 

這是如何創建數據庫。正如你所看到的那樣,「_id」列的類型是「整數」,我猜是和long一樣的(或至少兼容)。

(編輯)

下應使您能夠將附註內容複製出來的原始表並將其插入到另一個。

mCursor = mDbHelper.fetchNote(rowId); 
    title = mCursor.getString(mCursor.getColumnIndex(NotesDbAdapter.KEY_TITLE)); 
    body = mCursor.getString(mCursor.getColumnIndex(NotesDbAdapter.KEY_BODY)); 

    // I'm using mDbHelper2 here to indicate that you're inserting it into 
    // a different table. 
    mDbHelper2.createNote(title, body); 

    // And if you want to remove it from the original table as well: 
    mDbHelper.deleteNote(rowId); 

    // I'm guessing you'd have to run this to square up all the rows in the display: 
    fillData(); 
+0

那麼,我將如何去獲取當前的數據庫條目並將其複製到新的數據庫中。我可以通過點擊的rowId獲取當前條目。我如何複製條目並將rowid更新爲它應該包含的內容,而不是被點擊的原始條目的rowid - 這就是我被卡住的地方。我無法讓副本工作,然後將新的數據庫rowid傳遞迴調用活動。 – Will 2010-08-31 20:12:13

+0

NotesDbAdapter類具有一個fetchNote()函數,該函數接受一個rowId並返回一個指針,該指針指向數據庫中具有該rowId的條目。然後,您可以獲取數據字段(在本例中爲標題和正文),並使用相同的值在新表中創建一個新條目。 – onlynone 2010-09-03 17:31:49

0

您可以使用與第一個列相同的列來設置新的數據庫,但在id列上沒有自動遞增參數。然後,您只需添加一個新的條目,並使用與另一條相同的詳細信息。

+0

因此,如果我建立了一個新的數據庫,我會設置它與原始相同的列減去rowid。那麼我將如何處理數據庫呢? 現在,ListActivity打開並顯示數據庫條目。然後我有一個OnListItemClick方法,它接受被單擊的條目的行ID - >然後我想將該條目複製到新的數據庫中(通過記事本CreateNote方法修改以適合我的需要並減去rowid?)我不是確定如何去設置。 – Will 2010-08-31 18:27:41