2017-02-16 17 views
0

Ich benutze this Tutorial, um eine App für iOS mit einer SQLite3-Datenbank zu erstellen. Jedoch, anstatt Namen, Nachname und Alter zu haben; Ich habe den Namen und das aktuelle Datum.sqlite3 akzeptiert keine Leerzeichen im Text (Objective-C)

Ich benutze NSDate, um das aktuelle Datum zu erhalten, und ich legte es in einem UILabel anstelle eines UITextField.

Jetzt, wenn ich Speichern drücke, bekomme ich "Syntaxfehler". Ich habe versucht, das aktuelle Jahr zu verwenden, und es funktioniert, weil es eine Ganzzahl ist, obwohl die Spalte in der Tabelle auf "Text" festgelegt ist. Ein Datum mit Leerzeichen wie "16 Feb 2017" scheint nicht zu funktionieren, da es Leerzeichen enthält.

Ich möchte in der Lage sein, es in diesem Format zu speichern: 16 Februar 2017.

Danke!

- (void)viewDidLoad { 

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateStyle:NSDateFormatterLongStyle]; 

//Get the date today. 
NSString *dateToday = [formatter stringFromDate:[NSDate date]]; 

[super viewDidLoad]; 
// Do any additional setup after loading the view. 

self.txtFirstname.delegate = self; 
[_txtAge setText:dateToday]; 

- (IBAction)saveInfo:(id)sender { 
    // Prepare the query string. 
    // If the recordIDToEdit property has value other than -1, then create an update query. Otherwise create an insert query. 
    NSString *query; 
    if (self.recordIDToEdit == -1) { 
     query = [NSString stringWithFormat:@"insert into peopleInfo values(null, '%@', %@)", self.txtFirstname.text, self.txtDate.text]; 
    } 
    else{ 
     query = [NSString stringWithFormat:@"update peopleInfo set firstname='%@', date=%@ where peopleInfoID=%d", self.txtFirstname.text, self.txtDate.text, self.recordIDToEdit]; 
    } 


    // Execute the query. 
    [self.dbManager executeQuery:query]; 

    // If the query was successfully executed then pop the view controller. 
    if (self.dbManager.affectedRows != 0) { 
     NSLog(@"Query was executed successfully. Affected rows = %d", self.dbManager.affectedRows); 

     // Inform the delegate that the editing was finished. 
     [self.delegate editingInfoWasFinished]; 

     // Pop the view controller. 
     [self.navigationController popViewControllerAnimated:YES]; 
    } 
    else{ 
     NSLog(@"Could not execute the query."); 
    } 
} 
+0

Der Textdatentyp sollte Text mit Leerzeichen akzeptieren. Löschen Sie einfach die vorhandene Version der App vom Gerät oder Simulator und versuchen Sie es erneut. – kb920

+0

Ich habe das versucht, aber ich bekomme das gleiche: 2017-02-16 05: 32: 48.953091 SQLite3DBSample [627: 104914] in der Nähe von "Februar": Syntaxfehler 2017-02-16 05: 32: 48.953236 SQLite3DBSample [627 : 104914] Die Abfrage konnte nicht ausgeführt werden. – Cuckoo

+0

Senden Sie mir leere DB, wenn Sie können – kb920

Antwort

0

Sie benötigen ' um die Datumsformate %@ zu '%@' setzen unter

if (self.recordIDToEdit == -1) { 
    query = [NSString stringWithFormat:@"insert into peopleInfo values(null, '%@', '%@')", self.txtFirstname.text, self.txtDate.text]; 
} 
else{ 
    query = [NSString stringWithFormat:@"update peopleInfo set firstname='%@', date='%@' where peopleInfoID=%d", self.txtFirstname.text, self.txtDate.text, self.recordIDToEdit]; 
} 
+0

Wow, es hat funktioniert ... Danke! – Cuckoo

0

Diese Abfrage

Einsatz in peopleInfo (peopleInfoID, Vorname, Datum) Werte (1, 'Kuckuck', '16 Februar 2016')

Es funktioniert für mich!

1

Sie haben Textwert innerhalb ‚‘ hinzuzufügen. EX.

query = [NSString stringWithFormat:@"insert into peopleInfo (peopleInfoID,firstname,date) values (1, 'user name', '16 FEB 2016')"]; 
Verwandte Themen