sqlite3_bind_blob -> Übergabeparameter

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • sqlite3_bind_blob -> Übergabeparameter

      Hallo Leute,

      ich möchte in meiner SQL-Database bilder abspeichern. Das funktioniert alles soweit.

      Aber besteht auch die Möglichkeit wenn ich meine SQL Funktion Aufruf das ich noch was abspeichern kann ?

      ich möchte nämlich ein BIld und dazu die DBid abspeichern

      Code

      Quellcode

      1. - (void) insertPicture:(UIImage *) bild :(NSString *) dbid
      2. {
      3. NSFileManager *fileMgr = [NSFileManager defaultManager];
      4. NSString *dbPath = [self getDBPath];
      5. BOOL success = [fileMgr fileExistsAtPath:dbPath];
      6. if(!success)
      7. {
      8. NSLog(@"Kann Datenbank nicht finden '%@'.", dbPath);
      9. }
      10. if(!(sqlite3_open([dbPath UTF8String], &db) == SQLITE_OK))
      11. {
      12. NSLog(@"An error has occured.");
      13. }
      14. sqlite3_stmt *updStmt =nil;
      15. int res = SQLITE_ERROR;
      16. const char *sql = "insert into AUTOMOTIVE (a_picture, a_dbid) Values(?, ?) " ;
      17. res = sqlite3_prepare_v2(db, sql, -1, &updStmt, NULL);
      18. if(res!= SQLITE_OK)
      19. {
      20. NSLog(@"Error while creating update statement:%s", sqlite3_errmsg(db));
      21. }
      22. NSData *imageData = [NSData dataWithData: UIImagePNGRepresentation(bild)];
      23. res = sqlite3_bind_blob(updStmt, 1, [imageData bytes], [imageData length] , SQLITE_TRANSIENT);
      24. if((res = sqlite3_step(updStmt)) != SQLITE_DONE)
      25. {
      26. NSLog(@"Error while updating: %s", sqlite3_errmsg(db));
      27. sqlite3_reset(updStmt);
      28. }
      29. res = sqlite3_reset(updStmt);
      30. res = sqlite3_close(db);
      31. }
      Alles anzeigen


      Aber das Problem ist die DBID wird nicht abgespeichert ??

      KÖnnt ihr mir helfen ?

      Danke
    • Du musst für die Id einen weiteren bind-Aufruf (sqlite3_bind_text) einfügen; diesen jedoch mit Indexwert 2.

      Schau Dir mal FMDB an. Das ist ein Objective-C-Wrapper für SQLite. Damit wird der Aufruf zu

      Quellcode

      1. [theDatabase executeUpdate:@"insert into AUTOMOTIVE (a_picture, a_dbid) Values(?, ?)", imageData, dbid];
      „Meine Komplikation hatte eine Komplikation.“