2010-06-22 9 views
2

En cherchant de l'aide de syntaxe pour SQLite, une chose très étrange se produit. Je cours la requête sur un iPhone.Syntaxe de SQLite (ordre en provoquant l'erreur)

Voici la requête qui échoue: (On suppose que les tables sont correctes, cela fonctionne très bien dans le plugin sqlite firefox)

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

Pour le faire fonctionner, je dois enlever l'ordre par clause, ce qui semble un peu étrange.

Voici l'appel:

// 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); 
     } 
    } 

dans ce qui précède, RTN est == 1, ce qui indique une erreur SQL.

Encore une fois, la requête fonctionne très bien à l'extérieur du téléphone. Est-il possible que les bibliothèques SQL sur l'iPhone aient une syntaxe différente pour l'ordre?

+0

Dites-nous s'il vous plaît _how_ la requête échoue? Et essayez d'ajouter DisplayOrder pour sélectionner la clause ... –

+0

Pouvons-nous obtenir un extrait du message d'erreur? – rexposadas

+1

Certaines bases de données requièrent que la ou les colonnes spécifiées dans ORDER BY existent également dans la clause SELECT ... –

Répondre

1
  1. Utilisez sqlite3_errmsg (ou sqlite3_errmsg16) pour obtenir plus d'informations sur l'erreur.

  2. Essayez d'ajouter DisplayOrder pour sélectionner une clause. Certaines bases de données requièrent que toutes les colonnes de la clause ORDER BY soient également présentes dans la clause SELECT.

Questions connexes