У меня есть этот метод в моем классе, вставки данных в таблицу,sqlite3_step (заявление) дает ложный EVERYTIME
- (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 (заявление) возвращают ложные каждый раз.
Я называю этот метод из,
- (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];
}
}
}
}
Но я не подвожу успеха не каждый раз, когда я выполнить код.
Не знаю почему, но это происходит после того, как я добавил новое поле в базу данных, которое является imageURL.
Моя создать БД запрос,
const char *sql_stmt = "create table if not exists loginDetail (name text, email text, mobno text, username text primary key, password text, imageUrl text)";
пожалуйста, предложить изменения.
Возможный дубликат [sqlite3 \ _step (statement) == SQLITE \ _DONE всегда неверен] (http://stackoverflow.com/questions/16891190/sqlite3-stepstatement-sqlite-done-is-always-false) –
вставьте свой запрос insertSQL здесь – Sujit
он в коде. @Sujit – KAR