ich diese Methode in meiner Klasse, die Daten in der Tabelle einfügen,sqlite3_step (Erklärung) gibt falsch jedes Mal
- (BOOL) registerData:(NSString*)name
email:(NSString *)email mobno:(NSString*)mobno username:(NSString *)username password:(NSString *)password imageUrl:(NSString*)imageUrl;
{
const char *dbpath = [databasePath UTF8String];
if (sqlite3_open(dbpath, &database) == SQLITE_OK)
{
NSString *insertSQL = [NSString stringWithFormat:@"insert into loginDetail (name, email, mobno, username, password, imageUrl) values (\"%@\",\"%@\", \"%@\", \"%@\", \"%@\", \"%@\")", name,email,mobno,username,password,imageUrl];
NSLog(@"image path %@", imageUrl);
const char *insert_stmt = [insertSQL UTF8String];
if (sqlite3_prepare_v2(database, insert_stmt, -1, &statement, NULL) == SQLITE_OK) {
if (sqlite3_step(statement) == SQLITE_DONE)
{
NSLog(@"SQLITE DONE %d", sqlite3_step(statement));
return YES;
}
else {
NSLog(@"SQLITE DONE %d", sqlite3_step(statement));
return NO;
}
sqlite3_reset(statement);
}
}
sqlite3_close(database);
return NO;
}
sqlite3_step (Erklärung) falsch jedes Mal zurück.
ich von dieser Methode nenne,
- (IBAction)registerBtn:(UIButton *)sender {
NSLog(@"fileName path = %@", fileName);
wasClicked = YES;
BOOL success = NO;
if(wasClicked)
{
if((_errorMessageLabel.hidden)) {
NSLog(@"register button clicked");
NSString *alertString = @"Data Insertion failed";
if (name.text.length>0 && email.text.length>0 &&
mobileNo.text.length>0 && Useraname.text.length>0 && password.text.length>0 && fileName.length>0)
{
success = [[DatabaseConnection getSharedInstance]registerData:
name.text email:email.text mobno:
mobileNo.text username:Useraname.text password:password.text imageUrl:fileName];
NSLog(success? @"yes" : @"no");
if(success == YES)
{
_successLbl.text = @"Data Registered Successfully";
name.text = @"";
email.text [email protected]"";
mobileNo.text = @"";
Useraname.text [email protected]"";
password.text [email protected]"";
}
}
else{
alertString = @"Enter all fields";
}
if (success == NO) {
alertString = @"Data not registered, Duplicate Username Found!";
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:
alertString message:nil
delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
}
}
}
}
Aber ich bin immer Erfolg NO jedes Mal, wenn ich den Code ausführen.
Ich weiß nicht warum, aber es passiert, nachdem ich ein neues Feld in der Datenbank hinzugefügt habe, die imageURL ist.
Mein db-Abfrage ist,
const char *sql_stmt = "create table if not exists loginDetail (name text, email text, mobno text, username text primary key, password text, imageUrl text)";
bitte vorschlagen Änderungen erstellen.
Mögliches Duplikat von [sqlite3 \ _step (Anweisung) == SQLITE \ _DONE ist immer falsch] (http://stackoverflow.com/questions/16891190/sqlite3-stepstatement-sqlite-done-is-always-false) –
Fügen Sie hier Ihre insertSQL-Abfrage – Sujit
es ist in Code. @Sujit – KAR