2010-09-18 5 views
0

J'essaie d'insérer les liens d'URL dans la base de données SQLite3 mais son plantage est-ce que quelqu'un a une idée ... y-a-t-il un problème?L'URL n'est pas insérée dans la base de données SQLite3

si j'essais statiquement d'insérer n'importe quelle URL, cela fonctionne mais dynamiquement quand j'obtiens des adresses des pages Web naviguées .... elles n'insèrent pas .... me suggèrent svp moi comment le faire fonctionner. J'utilise le SDK 3.2

ceci est ma fonction d'insertion:

-(BOOL)insertImageToDB:(UIImage *)screenImage forURL:(NSString *)webURL 
{ 
    BOOL retValue=NO; 
    sqlite3 *database; 
    sqlite3_stmt *insert_statement = nil; 

    //NSString *localURL = webURL; 

    NSString *localURL = @"https://www.google.com/"; 

    if (sqlite3_open([[self sqlitePath] UTF8String], &database)==SQLITE_OK) 
    { 
     const char *sql = "insert into Web_Image (Screen_Image, url) Values (?,?)"; 
     if (sqlite3_prepare_v2(database, sql, -1, &insert_statement, NULL) == SQLITE_OK) { 

      NSData *data = UIImageJPEGRepresentation(screenImage, 0); 
      if(data != nil) 
      { 
       sqlite3_bind_blob(insert_statement, 1, [data bytes], [data length], SQLITE_TRANSIENT); 
      } 
      else 
      { 
       sqlite3_bind_blob(insert_statement, 1, nil, -1 , SQLITE_TRANSIENT); 
      } 
      sqlite3_bind_text(insert_statement, 2, [localURL UTF8String], -1, SQLITE_TRANSIENT); 
      //sqlite3_bind_text(insert_statement, 2, [webURL UTF8String], -1, SQLITE_TRANSIENT); 
      if(SQLITE_DONE == sqlite3_step(insert_statement)){ 
       retValue=YES; 
      } 
     } 
     sqlite3_reset(insert_statement); 
     sqlite3_finalize(insert_statement); 
     sqlite3_close(database); 
    } 
    return retValue; 
} 

où, screenImage: la capture d'écran de la page Web actuelle. webURL: est l'URL de la page web actuelle.

+0

Plus d'informations sur l'accident, s'il vous plaît? La ligne sur laquelle il s'écrase serait un bon début. –

+0

Une pensée: 'sqlite3_step' devrait être exécuté dans une boucle jusqu'à ce qu'il renvoie' SQLITE_DONE'. Vous devrez peut-être l'appeler plus d'une fois. –

Répondre

1

Pour WebPageUrl statique

NSString *localURL = @"https://www.google.com/"; 
localURL =[localURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

Dynamic WebPageUrl

NSURL * url = Any web page url..... 
NSString *localURL =[NSString stringWithFormat:@"%@",url]; 
localURL =[localURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

Maintenant, vous pouvez insérer cette URL locale formatée dans la base de données sous forme de chaîne.

Questions connexes