【发布时间】:2011-07-15 06:05:38
【问题描述】:
假设我有一张有 2 列的表格。 _id 和名称。 _id 是主键,我不想手动设置这个值。我想执行 name="john," 的插入,并让程序创建我自己的 _id。我不清楚插入时使用什么“索引”以及使用多少问号。这段代码能完成这项工作吗? john 的索引应该是 1 还是 2?
String TABLENAME = "table";
SQLiteStatement statement = db.compileStatement("INSERT INTO "+TABLENAME+" VALUES(?);");
statement.bindString(1,"john");
statement.executeInsert();
接下来,假设我想手动设置自己的 _id 值。我可以将代码更改为:
String TABLENAME = "table";
SQLiteStatement statement = db.compileStatement("INSERT INTO "+TABLENAME+" VALUES(?,?);");
statement.bindLong(1,666); //Manual _id.
statement.bindString(2,"john");
statement.executeInsert();
【问题讨论】:
-
@Sandy:不,第一个示例不应该也不起作用。 sqlite 不会“猜测”提供的值将放在第二列中。
-
@sixfeetsix 在 SQLite 文档中,它说如果将空值作为主键传递,那么 SQLite 将自动创建一个键。因此,如果有一个问号,我会假设它会解释为我将 null 传递给键,然后将“john”传递给技术上的第二个参数(列“名称”)。无论如何,我想我认为手动处理所有列更容易,然后第一列传递 null。这将自动创建主键并让我传递任何其他值,并且将来允许我手动使用自己的键。
-
@user817129:请参阅我的更新以获取有关如何传递或不传递自动增量列的值的示例。
-
我明白了。我将使用列名并相应地传递值。
标签: android sqlite insert compilation