2010-10-25 55 views
2

请问,这是从一个表复制到另一个特定行的正确语法?正确的语法从一个表行复制到另一个(sqlite的安卓)

db.execSQL("insert into Route select * from " + DATABASE_TABLE + " WHERE _id = rowId"); 

因为某种原因,当我调用执行该语句的方法,所有从第一个表中的项目被复制到第二个表,而不是特定行我想要的。谢谢。

这是方法调用的副本:?

public void copyData(long rowId){ 
db.execSQL("insert into Route select * from " + DATABASE_TABLE + " WHERE _id = rowId"); 
} 

如果没有,请你告诉我怎么...

回答

0

我看到一对夫妇的问题:

首先,你”作为查询的一部分,请不要将rowId参数传递给您的copyData()方法,而是使用字符串文字rowID

二,ROWIDhas special meaning在SQLite中。这是一个伪列,用于唯一标识表中的每一行,并且通常是分配给INTEGER PRIMARY KEY列的相同值,我猜测您是如何声明_id的。结果是,当计算WHERE _id = ROWID时,这两个值总是匹配,因此所有行都被选中。

+0

嗯,是的,我明白你的意思。我以前也想过这个,但是因为我的方法正在接受一个参数。我认为这将是独一无二的。所以请把我应该用作语法的东西..因为我已经阅读过,如果我没有弄错,表格的行ID应该总是“_id”。这是否意味着我为第二个表分配了一个不同的主键ID。另外,我并不真正了解你所做的第一点。谢谢 – irobotxxx 2010-10-25 16:04:52

+0

对你提出的第一点抱歉,这是你的意思吗? db.execSQL(“insert into Route select * from”+ DATABASE_TABLE +“WHERE _id =”+ rowId); – irobotxxx 2010-10-25 16:08:14

+0

是的,那将是实现它的方法。第二件事实际上只是第一件事的副作用。 – Blrfl 2010-10-25 16:14:43

相关问题