SQL 래퍼 (FMDB)를 사용하여 테이블에서 업데이트를 시도합니다. 삽입 방법이 좋지 않으며 테이블에서 데이터를 업데이트하려고 할 때 문제가 발생합니다.iphone FMDB/SQLite 업데이트 쿼리가 작동하지 않습니다.
- (void)saveUserMoneyValidation:(UserDebtInfo *)entities
{
NSLog(@"entities.client_index = %d", entities.client_index);
[self deleteUserMoneyValidation:entities.client_index];
FMDatabase *newdb = [FMDatabase databaseWithPath:databasePathStore];
[newdb setLogsErrors:TRUE];
[newdb setTraceExecution:FALSE];
if (![newdb open])
{
NSLog(@"!!! Could not open db.");
return;
}
else
{
NSLog(@"DB Open successfuly.");
}
[newdb beginTransaction];
NSLog(@"entities = %@",entities);
[newdb executeUpdate:@"INSERT INTO MoneyValidation (client_index, client_name, sum, duration, monthly_payment, payment_type, debt_type, debt_code, categoryType) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)",
[NSNumber numberWithInt:entities.client_index],
entities.client_name,
entities.sum,
entities.duration,
entities.monthly_payment,
entities.payment_type,
entities.debt_type,
[NSNumber numberWithInt:entities.debt_code],
entities.categoryType
];
[newdb commit];
[newdb close];
}
업데이트 방법 :
-(void)updateUserMoneyValidation:(UserDebtInfo *)entities{
NSLog(@"entities.client_index = %d", entities.client_index);
FMDatabase *newdb = [FMDatabase databaseWithPath:databasePathStore];
[newdb setLogsErrors:TRUE];
[newdb setTraceExecution:FALSE];
if (![newdb open])
{
NSLog(@"!!! Could not open db.");
return;
}
else
{
NSLog(@"DB Open successfuly.");
}
BOOL success = NO;
[newdb beginTransaction];
NSLog(@"entities = %@",entities);
success = [newdb executeUpdate:@"UPDATE MoneyValidation SET client_name = ?, sum = ?, duration = ?, monthly_payment = ?, payment_type = ?, debt_type = ?, debt_code = ?, categoryType = ? WHERE client_index = %d;", entities.client_name, entities.sum, entities.duration, entities.duration, entities.monthly_payment, entities.payment_type, entities.debt_type, entities.debt_code, entities.categoryType, entities.client_index];
if (success)
{
NSLog(@"OK");
[db commit];
[db close];
}
else
{
NSLog(@"FAIL");
}
NSLog(@"OBJ - %@", entities);}
테이블 구조 :
CREATE TABLE MoneyValidation (ID INTEGER PRIMARY KEY, client_index INTEGER, client_name TEXT, sum TEXT, duration TEXT, monthly_payment TEXT, payment_type TEXT, debt_type TEXT, debt_code INTEGER, categoryType TEXT)
client_index 고유 코드입니다;
누군가가이 문제에 대한 조언을받을 수 있습니까? 감사합니다.
이 정보가 도움이 되었습니까? –
답장을 보내 주셔서 감사합니다! 문제가 발생했습니다. 이 감각으로 나를 도울 수 있니? 오류 : "업데이트 OKy! sqlite3_step (1 : SQL 논리 오류 또는 누락 된 데이터베이스) 호출 오류 SQLite_ERROR DB 쿼리 : COMMIT TRANSACTION;" –
문제의 원인이되는 코드를 게시 할 수 있습니까? –