关于记事本教程的问题

时间:2010-08-31 17:33:31

标签: android

完成记事本教程并提出问题。当它使用rowid,title和body字段构建数据库时 - 这三个都是私有静态最终字符串。但是当像fetchnote()这样的方法运行时,它会使用long id来获取注释。如果rowid是一个字符串,该方法如何获得该id?我想稍微修改一下教程,并将活动调用为listactivity。 listactivity将显示数据库中的所有内容,然后,当用户单击某个项目时,我想将该条目复制到新数据库并将行ID发送回调用活动。但我无法弄清楚如何让它将条目复制到新数据库,因为教程使用行id进行调整,我的新数据库将是空白的。那有意义吗?我是新手。

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

您可以使用与第一列相同的列设置新数据库,但在id列上没有自动递增参数。然后,您只需添加一个新条目,其详细信息与另一条相同。