SQLite语法(通过导致错误的顺序)

时间:2010-06-22 21:02:31

标签: iphone sql sqlite

寻找SQLite的一些语法帮助,一件非常奇怪的事情正在发生。我正在iPhone上运行查询。

以下是失败的查询:(假设表是正确的,这在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

为了让它运行,我必须删除order by子句,这看起来有点奇怪。

这是电话:

// 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库具有不同的语法语法?

1 个答案:

答案 0 :(得分:1)

  1. 使用sqlite3_errmsg(或sqlite3_errmsg16)获取有关错误的更多信息。

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