SQLite Insert Into

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

    • SQLite Insert Into

      Hallo zusammen,

      ich bin ein Anfänger in der Programmierung und habe folgendes Problem:

      Ich habe ein TableView mit meiner Masterliste (wird in sql ausgelesen und befüllt), durch das auswählen einer Zeile aus der Liste wird eine DetailView mit weiteren Informationen angezeigt. Das klappt auch alles. in der DetailView ist ein ADDBUTTON, wenn dieser gedrückt wird sollen zwei Argumente in eine neue Liste eingefügt (die ID und der Name, aus der Masterliste die bei der Methode (didSelectRowAtIndexPath) bis dahin ist alles in Ordnung. nun möchte ich das eben beim drücken des ADDBUTTONS in eine bestehende Tabelle(habe ich mit SQLite Manager erstellt so wie die Masterliste) die zwei Argunente eingetragen dazu habe ich folgenden Code:

      - (void)addInEigeneListe:(NSMutableDictionary *)array {

      if(!isOpend)
      [self openDatabase];

      sqlite3_stmt *statement;
      NSString *insertStatementString =[NSString stringWithFormat:@"INSERT INTO meine (ID,Name) VALUES ([url='''http://www.osxentwicklerforum.de/'mailto:%@,%@)''']%@,%@)", [array[/url] objectForKey:@"ID"],[array objectForKey:@"Name"]];
      sqlite3_prepare_v2(database, [insertStatementString UTF8String], -1, nil);
      sqlite3_step(statement);
      NSASSERT(result == SQLITE_OK, @"ERROR while inserting new entry");
      }

      Falls ihr noch infos braucht, bitte sagen. DANKE schonmal
    • wie mache ich den solche Code-Tags??

      also was ich erwarte von dem Code, das nach dem der Code INSERT INTO abläuft das die zwei Argumente in díe Liste eingetragen werden, und das beim zurückgehen in die TableView die aus einer Auswahl der Masterliste besteht dies angezeigt wird, was man alles eingefügt hat.

      und man soll später noch Sachen aus dieser neuen Tabelle löschen können wenn man im TableView so nach links "wischt".
    • Quellcode

      1. - (void)addInEigeneListe:(NSMutableDictionary *)array {
      2. if(!isOpend)
      3. [self openDatabase];
      4. sqlite3_stmt *statement;
      5. NSString *insertStatementString =[NSString stringWithFormat:@"INSERT INTO meine (ID,Name) VALUES (%@,%@)", [array objectForKey:@"ID"],[array objectForKey:@"Name"]];
      6. sqlite3_prepare_v2(database, [insertStatementString UTF8String], -1, nil);
      7. sqlite3_step(statement);
      8. int result = sqlite3_finalize(statement);
      9. NSASSERT(result == SQLITE_OK, @"ERROR while inserting new entry");
      10. }
      Alles anzeigen
    • ProgrammierNeuling schrieb:

      Quellcode

      1. - (void)addInEigeneListe:(NSMutableDictionary *)array {
      2. if(!isOpend)
      3. [self openDatabase];
      4. sqlite3_stmt *statement;
      5. NSString *insertStatementString =[NSString stringWithFormat:@"INSERT INTO meine (ID,Name) VALUES (%@,%@)", [array objectForKey:@"ID"],[array objectForKey:@"Name"]];
      6. sqlite3_prepare_v2(database, [insertStatementString UTF8String], -1, nil);
      7. sqlite3_step(statement);
      8. int result = sqlite3_finalize(statement);
      9. NSASSERT(result == SQLITE_OK, @"ERROR while inserting new entry");
      10. }
      Alles anzeigen


      die values sind textwerte und keine zahlen nehme ich an. also musst du sie unter '' setzen. also VALUES ('%@','%@').
      würdest du dir die fehlermeldung von sqlite ausgeben lassen hättest du das auch selbst rausgefunden.
      außerdem bedenke bitte was passiert wenn im namen ein ' vorkommt...
    • Oh ja die ID ist Zahl, der Name ist Text, habe ich geändert und es hat gleich funktioniert. wusste nicht wie ich mir die Fehlermeldung anzeigen könnte.. Das mit dem ' im Namen kann man wohl erstmal unbeachtet lassen.

      Jedoch besteht ein Problem weiterhin, dies wird nicht permanent gespeichert, d.h. sobald ich den Simulator neu starte ist die eben eingefügte Zeile im tableView nicht mehr drinnen. Außerdem wenn ich noch etwas hinzufügen möchte, funktioniert dies dann nicht...


      zum reloadData das benutze ich..
    • ja, die Doku habe ich eben gelesen aber ich muss sagen, verstehe ich das nicht ganz...


      Das Problem: Jetzt funktioniert das mit dem ADDBUTTON, aber beim Neustart wird die Tabelle die man durch den ADDBUTTON erstellt hat, nicht mehr angezeigt.

      Nun weis ich nicht wo ich da ansetzten muss. Wird die Tabelle an einer anderen Stelle gespeichert, und das befüllen der Tabelle beim Neustart wird von einem anderen ORT geladen??

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ProgrammierNeuling ()

    • So habe das jetzt gelöst mit Hilfe von Code Beispielen und z.Zt. läuft es, ehrlich gesagt weis ich das nicht wie das ging, habe die Namen der Datenbank geändert. Und gesagt das er eine neue Tabelle erstellen soll wenn diese nicht existiert.

      Also was ich davon verstanden habe, das er in User/Documente sucht ob die Datei existiert und wenn nicht dann macht er die neu und speichert sie unter dem Pfad User/Documente/....