Я имею дело с новой проблемой.Я начал со следующего кода:
-(IBAction) Login:(id) sender{
const char *dbpath = [databasePath UTF8String];
sqlite3_stmt *statement;
if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
{
NSString *querySQL = [NSString stringWithFormat: @"SELECT * FROM Contacts WHERE Login= (\"%@\") AND Password = (\"%@\")", Login.text, Password.text];
const char *query_stmt = [querySQL UTF8String];
if (sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL) == SQLITE_OK)
{
if (sqlite3_step(statement) == SQLITE_ROW)
{
//Store '1' when a user wants to stay logged
**if(logSwitch.on){
[self aStayLogged];
}else{
[self aReleaseLogged];
}**
Model *model = [Model sharedModel];
model.paramLogged = Login.text;
//[self openSecondView:nil];
} else {
Status.text = @"Login failed: Please check your ID and Password";
}
sqlite3_finalize(statement);
}
sqlite3_close(contactDB);
}
}
-(void) aStayLogged {
sqlite3_stmt *statement;
const char *dbpath = [databasePath UTF8String];
if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
{
NSString *updateSQL = [NSString stringWithFormat: @"UPDATE CONTACTS SET LOGGED = '1' WHERE LOGIN = (\"%@\")", Login.text];
const char *update_stmt = [updateSQL UTF8String];
sqlite3_prepare_v2(contactDB, update_stmt, -1, &statement, NULL);
int success = sqlite3_step(statement);
if (success == SQLITE_ERROR) {
//NSAssert1(0, @"Error: failed to insert into the database with message '%s'.", sqlite3_errmsg(contactDB));
Status.text = @"Update failed";
}else{
**Status.text = @"Stay OK";**
}
//sqlite3_bind_text(statement, 1, [coffeeName UTF8String], -1, SQLITE_TRANSIENT);
//sqlite3_bind_int(statement, 2, coffeeID);
sqlite3_finalize(statement);
}
sqlite3_close(contactDB);
}
Вот предложение: если я связываю метод 'aStayLogged' как IBAction с кнопкой, обновление выполняется правильно.Но когда я встраиваю этот метод в метод Login, ничего не происходит!
Я проверяю это с помощью метода:
-(IBAction) Check{
sqlite3_stmt *statement;
const char *dbpath = [databasePath UTF8String];
if (sqlite3_open(dbpath, &contactDB) == SQLITE_OK)
{
NSString *querySQL = [NSString stringWithFormat: @"SELECT LOGIN FROM CONTACTS WHERE LOGGED = '1'"];
const char *query_stmt = [querySQL UTF8String];
sqlite3_prepare_v2(contactDB, query_stmt, -1, &statement, NULL);
if (sqlite3_step(statement) == SQLITE_ROW) {
NSString *loggedField = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 0)];
Status.text = loggedField;
[loggedField release];
}else{
Status.text = @"Update failed";
}
sqlite3_finalize(statement);
}
sqlite3_close(contactDB);
}
Самое смешное, что статус меняется на «Оставайся в порядке», что является подтверждением того, что он должен был работать!У кого-нибудь есть идея, что может быть причиной этого?Извините за длинный пост - я также задаю глупые вопросы, но на этот раз я действительно этого не вижу ...