Sqlite-Manager und Xcode. Insert-Anweißung , Daten werden nicht im SQLite-Manager angezeigt

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

    • Sqlite-Manager und Xcode. Insert-Anweißung , Daten werden nicht im SQLite-Manager angezeigt

      Hallo liebe Community,

      ich hab folgendes Problem, ich möchte die Möglichkeit haben. das ich Daten in die Datenbank hinzufügen kann. meine Datei heißt Test.sqlite

      Das Problem was ich hab ist das Die Daten in der Datenbank also wenn ich beim SQlite-Manager die Datenbank öffne sind diese nicht vorhanden ( Datensatz vorhanden)




      ich poste euch mal den Code:

      NSFileManager *fileMgr = [NSFileManager defaultManager];



      NSString *dbPath = [[[NSBundle mainBundle] resourcePath ]stringByAppendingPathComponent:@"test.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.");

      }


      sqlite3_stmt *sqlstatementin;

      NSString *insertSQL = [NSString stringWithFormat:@"INSERT INTO auto (fahrzeug ) VALUES ('test')"];

      const char *insert_stmt = [insertSQL UTF8String];


      if(sqlite3_prepare(db, insert_stmt, -1, &sqlstatementin, NULL) != SQLITE_OK)

      {

      NSLog(@"Problem mit SQL-Statement");

      }

      sqlite3_step(sqlstatementin);

      NSLog(@"Contact added") ;


      sqlite3_finalize(sqlstatementin);

      sqlite3_close(db);




      Ausgabe:
      2012-02-25 14:24:27.668 Insert[550:f803] Contact added


      Bitte helft mir :-)
    • Nein. Wenn du die DB verändern willst must du sie zuerst vom Bndle in das entsprechende Verzeichnis des Devices kopieren und dort kannst du sie dann verändern. Also z.B. in DocumentDir, CachedDir oder LibraryDir. Je nachdem was mit der Datei gemacht werden soll

      Gruß

      Claus
      2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

      Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
    • Du must programmatisch Deine Datei aus dem Bündle heraus in das Dateisystem des iPhones kopieren und dann mit dieser Kopie arbeiten

      z.B. so:

      Quellcode

      1. +(BOOL)sqlInstallDataBaseWithName:(NSString*)Name ofType:(NSString*)Type
      2. {
      3. NSString *dbFilePath;
      4. NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
      5. NSString *documentFolderPath = [searchPaths objectAtIndex:0];
      6. NSString *filename=[NSString stringWithFormat:@"%@.%@",Name,Type];
      7. dbFilePath = [documentFolderPath stringByAppendingPathComponent:filename];
      8. if (![[NSFileManager defaultManager] fileExistsAtPath:dbFilePath])
      9. {
      10. NSString *backupDbPath = [[NSBundle mainBundle] pathForResource:Name ofType:Type];
      11. if (backupDbPath == nil)
      12. {
      13. myError(@"Database path is nil");
      14. return NO;
      15. }
      16. else
      17. {
      18. BOOL copiedBackupDb = [[NSFileManager defaultManager] copyItemAtPath:backupDbPath toPath:dbFilePath error:nil];
      19. if (!copiedBackupDb)
      20. {
      21. myError(@"Copying database failed");
      22. return NO;
      23. }
      24. }
      25. }
      26. return YES;
      27. }
      Alles anzeigen


      Gruß

      Claus
      2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

      Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
    • Benney schrieb:

      wie heißt dann die Kopie der DB hat die auch die Endung .sqlite???

      wo finde ich die ??

      Claus hat Dir eine fertige Methode zur Verfügung gestellt. Es wird Dir am meisten bringen, wenn Du Dir die Mühe machst, die Funktionsweise dieser Methode zu verstehen. Schau in der Dokumentation nach, was die von Claus verwendeten Methoden und Funktionen machen. Wenn du Claus' Methode verstanden hast, dann kannst Du Dir die beiden Fragen auch selbst beantworten.

      Michael