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