2010-06-22 135 views
2

寻找SQLite的一些语法帮助,发生了一件非常奇怪的事情。我正在iPhone上运行查询。SQLite语法(按顺序导致错误)

这里是一个失败的查询:(假设表是正确的,这将运行在Firefox的sqlite的插件很大)

select tcodes.DisplayOrder, StatusText, StatusCode 
    from tcodes 
    join tcode_transitions on tcode_transitions.available = tcodes.UNID 
    where StatusCode = 'AAA' 
order by tcodes.DisplayOrder 

为了得到它的运行,我有子句删除订单,这似乎有点奇怪。

这里是呼叫:

// Open the database from the users filessytem 
    if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) { 
     // Setup the SQL Statement and compile it for faster access 

     int rtn = sqlite3_prepare_v2(database, [sql UTF8String], -1, &compiledStatement, nil); 
     if(rtn != SQLITE_OK) { 
      NSLog(@"SQL Error: %d",rtn); 
      sqlite3_close(database); 
     } 
    } 
在上面,RTN

是== 1,它表示一个SQL错误。

此外,查询在手机外运行良好。 iPhone上的SQL库可能有不同的命令语法吗?

+0

请告诉我们_how_查询失败? 并尝试添加DisplayOrder以选择子句... – 2010-06-22 21:06:25

+0

我们是否可以获取错误消息的片段? – rexposadas 2010-06-22 21:07:07

+1

某些数据库要求在ORDER BY中指定的列也存在于SELECT子句中... – 2010-06-22 21:07:15

回答

1
  1. 使用sqlite3_errmsg(或sqlite3_errmsg16),以获取有关错误的详细信息。

  2. 尝试添加DisplayOrder以选择子句。 某些数据库要求ORDER BY子句中的所有列也存在于SELECT子句中。