在sqlite中更新记录 [英] updating records in sqlite
问题描述
- (BOOL)updatedata:(NSString *)name mobileno:(NSString *)mobileno
email:(NSString *)email性别:(NSString *)性别地址1:(NSString *)address1 address2:(NSString *)address2 city:(NSString *)city state:(NSString *)state country:(NSString *)country pincode:(NSString *)pincode dob:(NSString *)dob
{
//尝试新的
const char * dbpath = [databasePath UTF8String];
if(sqlite3_open(dbpath,& database)= = SQLITE_OK)
{
const char * sqlQuery =" UPDATE studentsDetail SET name = ?,mobileno = ?, email = ?,,性别=?,地址1 =?,地址2 =?,城市=?,州=?,国家=?,pincode =?,dob =? WHERE name ==?" ;;
sqlite3_stmt * query = nil;
int retVal;
if((retVal = sqlite3_prepare_v2(database,sqlQuery,-1,& query,NULL))== SQLITE_OK){
sqlite3_bind_text(query,1,[name UTF8String ],-1,SQLITE_TRANSIENT);
sqlite3_bind_text(查询,2,[mobileno UTF8String], - 1,SQLITE_TRANSIENT);
sqlite3_bind_text(查询,3,[email UTF8String ],-1,SQLITE_TRANSIENT);
sqlite3_bind_text(查询,4,[性别UTF8String], - 1,SQLITE_TRANSIENT);
sqlite3_bind_text(查询,5,[address1 UTF8String ],-1,SQLITE_TRANSIENT);
sqlite3_bind_text(查询,6,[地址2 UTF8String], - 1,SQLITE_TRANSIENT);
sqlite3_bind_text(查询,7,[城市UTF8String ],-1,SQLITE_TRANSIENT);
sqlite3_bind_text(查询,8,[状态UTF8String], - 1,SQLITE_TRANSIENT);
sqlite3_bind_text(查询) y,9,[country UTF8String],-1,SQLITE_TRANSIENT);
sqlite3_bind_text(query,10,[pincode UTF8String],-1,SQLITE_TRANSIENT);
sqlite3_bind_text(查询,11,[dob UTF8String], - 1,SQLITE_TRANSIENT);
sqlite3_bind_text(查询,12,[名称UTF8String], - 1,SQLITE_TRANSIENT);
int result;
if((result = sqlite3_step(query))!= SQLITE_DONE){
NSLog(@"无法执行查询%d",result);
}
else {
NSLog(@成功更新的行!);
}
sqlite3_reset(查询);
sqlite3_finalize(查询);
}
else {
NSLog(@准备UPDATE语句%d时出错,retVal);
}
int result1 = sqlite3_close(database) ;
if(result1!= SQLITE_OK){
NSLog(@关闭数据库连接失败。结果%d",result1);
}
else {
NSLog(@成功关闭数据库连接);
}
}
返回YES;
}
i我得到一个错误:
无法执行查询5
代码中哪一行错误....
-(BOOL) updatedata:(NSString*)name mobileno:(NSString*)mobileno
email:(NSString*)email gender:(NSString*)gender address1:(NSString*)address1 address2:(NSString*)address2 city:(NSString*)city state:(NSString*)state country:(NSString*)country pincode:(NSString*)pincode dob:(NSString*)dob
{
// trying new
const char *dbpath = [databasePath UTF8String];
if (sqlite3_open(dbpath, &database) == SQLITE_OK)
{
const char *sqlQuery = "UPDATE studentsDetail SET name = ?,mobileno = ?,email = ?,gender = ?,address1 = ?,address2 = ?,city = ?,state = ?,country = ?,pincode = ?,dob = ? WHERE name == ?";
sqlite3_stmt *query = nil;
int retVal;
if ((retVal = sqlite3_prepare_v2(database, sqlQuery, -1, &query, NULL)) == SQLITE_OK) {
sqlite3_bind_text(query, 1, [name UTF8String], -1, SQLITE_TRANSIENT );
sqlite3_bind_text(query, 2, [mobileno UTF8String], -1, SQLITE_TRANSIENT );
sqlite3_bind_text(query, 3, [email UTF8String], -1, SQLITE_TRANSIENT );
sqlite3_bind_text(query, 4, [gender UTF8String], -1, SQLITE_TRANSIENT );
sqlite3_bind_text(query, 5, [address1 UTF8String], -1, SQLITE_TRANSIENT );
sqlite3_bind_text(query, 6, [address2 UTF8String], -1, SQLITE_TRANSIENT );
sqlite3_bind_text(query, 7, [city UTF8String], -1, SQLITE_TRANSIENT );
sqlite3_bind_text(query, 8, [state UTF8String], -1, SQLITE_TRANSIENT );
sqlite3_bind_text(query, 9, [country UTF8String], -1, SQLITE_TRANSIENT );
sqlite3_bind_text(query, 10, [pincode UTF8String], -1, SQLITE_TRANSIENT );
sqlite3_bind_text(query, 11, [dob UTF8String], -1, SQLITE_TRANSIENT );
sqlite3_bind_text(query, 12, [name UTF8String], -1, SQLITE_TRANSIENT );
int result;
if ((result =sqlite3_step(query)) != SQLITE_DONE) {
NSLog(@"Failed to execute the query %d",result);
}
else {
NSLog(@"Succesfully updated row !");
}
sqlite3_reset(query);
sqlite3_finalize(query);
}
else {
NSLog(@ "Error in preparing UPDATE statement %d",retVal);
}
int result1 = sqlite3_close(database);
if (result1 != SQLITE_OK){
NSLog(@"Failure in closing connection to database. Result %d",result1);
}
else {
NSLog(@ "Successfully closed DB connection ") ;
}
}
return YES;
}
i am getting an error as:
"Failed to execute the query 5"
which line of the code is wrong in it....
推荐答案
我认为你的where子句不正确,它应该是where name =?而不是==。
I think your "where" clause is incorrect, it should be "where name = ?" instead of ==.
这篇关于在sqlite中更新记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!