【问题标题】:SQLite error: near "?": syntax errorSQLite 错误:“?”附近:语法错误
【发布时间】:2010-04-28 04:54:07
【问题描述】:

我随机收到错误消息“靠近”?“:语法错误” 执行查询“SELECT [record] FROM [ac_contacts_cache] LIMIT 0, 3"。

表架构:

如果不存在则创建表 [ac_contacts_cache] ( [记录] TEXT NOT NULL )

感谢您提供任何帮助。

【问题讨论】:

  • 随机如“有时,有时不是,对于同一个查询”?另外,您使用的是 sqlite 命令行还是某些语言绑定?
  • 我有时只得到这个,并且因为我没有针对这个表触发任何其他 SELECT stmt 相同的查询。我正在使用 C api。
  • 在我尝试回答之前,您的意图是什么 - LIMIT 0、3?是只显示3条记录吗?

标签: sqlite


【解决方案1】:

我一直试图让 LIMIT 在 MS SQL 中工作,但没有成功。这是一个 MySql 命令吗?

不管怎样,试试这个。

SELECT TOP 3 [record] FROM [ac_contacts_cache]

现在为您的创建表。我已经测试了这两个代码只是为了确保它可以工作,并且在 SQL Server 中工作并且是基本的 sql,所以在 SQL Lite 中应该没问题。

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'TestTable') AND type in (N'U'))
CREATE TABLE [dbo].TestTable(
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [FirstName] [text] NOT NULL ,
    [LastName] [text] NOT NULL)

第一行,如果您执行 SELECT * FROM sys.objects,您可以很好地了解发生了什么。您只需检索系统上的所有表,并查找您将要创建的表(在 Where 子句中指定,“TestTable”)。如果它没有被创建,我们继续我们的下一个语句,创建表。

你在这里几乎死了。所以我相信你可以知道发生了什么!

祝你好运!

【讨论】:

  • 您是否回答了错误的问题?这个答案与问题完全无关。
  • @M.Wires 这是测试我的记忆力,回到一年前的问题。但我想我只是说这是创建表的语法,如果它不存在的话。我这样做是因为我认为 SQLLite 不支持 LIMIT 子句。所以我向他展示了如何在没有 LIMIT 子句的情况下做到这一点。在我看到他说它有时有效的评论后,我决定不更新我的答案,因为如果它有时有效,它不可能是 Limit 子句。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-08
  • 2016-01-14
  • 2013-08-12
  • 2016-03-12
  • 2020-05-02
  • 1970-01-01
相关资源
最近更新 更多