2009-04-10 7 views
2

Je veux insérer une image dans sqlite3, j'ai créé la table en utilisant "créer une table table1 (photo blob, nom varchar (10));" Maintenant, je veux insérer une image dedans, alors quelle est la syntaxe pour insérer une image dedans? et dans une autre table je veux stocker l'emplacement de l'image ainsi pour la deuxième table quelle est ma syntaxe de création de table et de table d'insertion. Pouvez-vous m'aider? Et comment puis-je vérifier si elle est insérée correctement ou non à partir de la ligne de commande? Pourquoi ne pas simplement enregistrer l'image sur le système de fichiers de l'iphone et enregistrer seulement ses informations de localisation dans sqlite?Comment insérer une image dans SQLite sur l'iPhone?

Répondre

1

+0

ok, mais alors comment puis-je intégrer les deux ?? –

1

Vous pouvez obtenir la NSData première pour l'image et enregistrer que ...

NSData *imageData = UIImagePNGRepresentation(image); 
+0

ok son travail, dans le compilateur gdb il montre 4 lignes de façon répétitive, mais en fait je n'insère qu'une seule rangée pourquoi? Peux-tu m'aider? –

+0

NSData est représenté dans gdb en tant que jeu de données en plusieurs parties, mais il peut être transformé en objet NSString. – Jason

3

Vous pouvez insérer une image dans sqlite3 en suivant les lignes de code.

1) = Tout d'abord préparer SQLite insert Déclaration

static sqlite3_stmt *insert_statement; //Declare Insert statement  
    - (void)InsertIntoDatabase{ // start insert method 
     const char *sql = "INSERT INTO <yourtable> (<column1>, <BLOBColumnName>) VALUES (? , ?)" ; 
      if(sqlite3_prepare_v2(database, sql, -1, &insert_statement, NULL) != SQLITE_OK) 
       NSAssert1(0, @"Error while creating insert statement. '%s'", sqlite3_errmsg(database));} 

//For simple integer column** 
    sqlite3_bind_int(insert_statement, 1, <value column 1>); 

//For image column** 
    NSString *webUrl = @"http://yourwebsite/youImage.jpg";   
    UIImage *myImage = [self GetRawImage:webUrl]; //Get image from method below 
        if(myImage != nil){ 
        NSData *imgData = UIImagePNGRepresentation(myImage); 
        sqlite3_bind_blob(insert_statement, 2, [imgData bytes], [imgData length], NULL); 
        } 
        else { 
         sqlite3_bind_blob(insert_statement, 2, nil, -1, NULL); 
        } 
    } // end of insert method 

2) = méthode pour obtenir un fichier image Raw.

- (UIImage *)GetRawImage:(NSString *)imageUrlPath 
    { 
    NSURL *imageURL = [NSURL URLWithString:imageUrlPath]; 
    NSData *data = [NSData dataWithContentsOfURL:imageURL]; 
    UIImage *image = [[UIImage alloc] initWithData:data]; 
    return image; 
    } 

! Sa fait tellement simple

Questions connexes