IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Objective-C Discussion :

Problème avec condition WHERE dans commande SELECT


Sujet :

Objective-C

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Etudiant
    Inscrit en
    Novembre 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2013
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Problème avec condition WHERE dans commande SELECT
    Salut à tous,

    Je code sur Objective C.

    J'ai une requete SQL ci dessous qui fonctionne bien sans WHERE.
    Mais dès que je mets une condition WHERE, lorsque la condition est rempli celà marche par contre dès que la condition n'est pas remplie ca plante et ca donne :

    2013-11-07 17:17:02.605 Footix[6296:a0b] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 3 beyond bounds [0 .. 2]'
    *** First throw call stack:

    .....


    libc++abi.dylib: terminating with uncaught exception of type NSException
    (lldb) .
    Comment cela se fait et comment puis je éviter ce plantage merci pour votre aide.

    la commande SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const char *sql = "SELECT id, intitule, nbonnereponse, reponse1, reponse2,reponse3,reponse4 FROM  tabledesquestions WHERE nbonnereponse <> 1"
    partie du code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    - (NSMutableArray *) getaquestion{
        NSMutableArray *QuestionArray = [[NSMutableArray alloc] init];
        @try {
            NSFileManager *fileMgr = [NSFileManager defaultManager];
            NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"questions.sqlite"];
            BOOL success = [fileMgr fileExistsAtPath:dbPath];
            if(!success)
            {
                NSLog(@"Cannot locate database file '%@'.", dbPath);
            }
            if(!(sqlite3_open([dbPath UTF8String], &db) == SQLITE_OK))
            {
                NSLog(@"An error has occured.");
            }
     
            const char *sql = "SELECT id, intitule, nbonnereponse, reponse1, reponse2,reponse3,reponse4 FROM  tabledesquestions WHERE nbonnereponse <> 1";
            sqlite3_stmt *sqlStatement;
            if(sqlite3_prepare(db, sql, -1, &sqlStatement, NULL) != SQLITE_OK)
            {
                NSLog(@"Problem with prepare statement");
            }
     
            //
            while (sqlite3_step(sqlStatement)==SQLITE_ROW) {
                ListeQuestions *MaQuestion = [
    [ListeQuestions alloc]init];
     
     
                MaQuestion.questionId = sqlite3_column_int(sqlStatement, 0);
                 MaQuestion.numreponse = sqlite3_column_int(sqlStatement, 2);
     
     
                //pour les CHAR
                MaQuestion.intquestion = [NSString stringWithUTF8String:(char *) sqlite3_column_text(sqlStatement,1)];
     
     
                //pour les Images
                const char *raw1 = sqlite3_column_blob(sqlStatement, 3);
                int rawLen1 = sqlite3_column_bytes(sqlStatement, 3);
                NSData *data1 = [NSData dataWithBytes:raw1 length:rawLen1];
                MaQuestion.reponse1 = [[UIImage alloc] initWithData:data1];
     
                const char *raw2 = sqlite3_column_blob(sqlStatement, 4);
                int rawLen2 = sqlite3_column_bytes(sqlStatement, 4);
                NSData *data2 = [NSData dataWithBytes:raw2 length:rawLen2];
                MaQuestion.reponse2 = [[UIImage alloc] initWithData:data2];
     
     
                [QuestionArray addObject:MaQuestion];
     
            }
        }
        @catch (NSException *exception) {
            NSLog(@"An exception occured: %@", [exception reason]);
        }
        @finally {
            return QuestionArray;
        }

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonsoir,


    rapprochez vous dun forum objective C vu que le probleme n'est pas sql

  3. #3
    Membre habitué
    Homme Profil pro
    Etudiant
    Inscrit en
    Février 2010
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Février 2010
    Messages : 115
    Points : 139
    Points
    139
    Par défaut
    ça plante sur quelle ligne ?
    Sinon les variables commencent par une minuscule, ça aide vraiment à la relecture

  4. #4
    Rédacteur

    Homme Profil pro
    Expert iOS
    Inscrit en
    Juin 2005
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Expert iOS

    Informations forums :
    Inscription : Juin 2005
    Messages : 413
    Points : 1 619
    Points
    1 619
    Billets dans le blog
    1
    Par défaut
    Le message d'erreur est tout à fait explicite, il faut lire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     -[__NSArrayM objectAtIndex:]: index 3 beyond bounds [0 .. 2]'
    Ca signifie que tu essayes d'accéder à la 4ème case d'un tableau qui ne contient que 3 éléments.

    Regardes ce qu'il y a dans les NSArray de ton code et tu trouveras ton erreur.

Discussions similaires

  1. Problème avec min(date) dans un select
    Par Romanodi13 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/03/2015, 11h53
  2. [AC-2010] Bouton de commande avec "condition WHERE" à 2 variables
    Par albayt dans le forum IHM
    Réponses: 2
    Dernier message: 16/11/2013, 16h06
  3. [AC-2007] Problème avec instuctions Where et Select
    Par kedmard dans le forum VBA Access
    Réponses: 2
    Dernier message: 03/04/2012, 11h36
  4. [ZF 1.9] [Débutant] SELECT avec condition WHERE + précisions
    Par Ibuprofène dans le forum Zend_Db
    Réponses: 5
    Dernier message: 02/02/2010, 17h25
  5. Problème avec fonction "Now" dans clause Where
    Par moilou2 dans le forum VBA Access
    Réponses: 3
    Dernier message: 10/07/2008, 18h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo