2013-06-21 117 views
1

我试图在Mozilla源码执行此语句改变与结果表附加的SQLite从select语句

alter table (select tbl_name from sqlite_master where rowid=1) add GUID varchar 

但这运行到错误:

的SQLiteManager:可能的SQL语法错误:ALTER TABLE (选择从SQLITE_MASTER tbl_name其中ROWID = 1)添加GUID VARCHAR [近 “(”:语法错误] 异常名称:NS_ERROR_FAILURE 异常消息:组件返回失败代码:0x80004005的(NS_ERROR_FAILURE)[mozIStorageConnection.createStatement]

声明:从sqlite_master中选择tbl_name,其中rowid = 1正常工作

回答

1

不能这样做:在SQL中,表名和列名必须是嵌入SQL字符串本身的标识符。它们不能来自您查询的值,甚至不能来自查询参数。

您需要选择表名,制作alter table语句,然后单独执行。

+0

是否可以使用变量来保存查询的数据? – zahreelay

+0

@zahreelay我不确定SQLite是否允许将结果存储在一个变量中,但即使它存在,您也无法在'alter'语句中使用该变量的值。表的名称必须是标识符,而不是生成可用作标识符的字符串的表达式。 – dasblinkenlight

+0

谢谢。我在一个Db中有300个表格,我需要为它们中的每一个添加一列。有没有其他方法? – zahreelay