0
我使用下面的代码将代码插入数据库。这些数据被“:::”分割并且被分割的这些值被添加到数据库中。当我检查了数据库,数据不是SQLite中添加我无法将值插入到sqlite db
#pragma mark - Web View Delegate
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSString *strResponse = [[request URL] absoluteString];
if ([strResponse hasPrefix:@"ios:"]) {
NSString *newString = [strResponse substringFromIndex:[@"ios:" length]];
newString = [newString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
UIAlertView *uiAlert = [[UIAlertView alloc] initWithTitle:@"Message" message:newString delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes", nil];
[uiAlert show];
NSArray *arrItems = [newString componentsSeparatedByString:@":::"];
for (NSString *strItems in arrItems) {
[strItems stringByRemovingPercentEncoding];
NSMutableDictionary *mDic = [[NSMutableDictionary alloc] init];
[mDic setObject:strItems forKey:@"item_name"];
[mDic setObject:@"0" forKey:@"is_deleted"];
[[DataBase connection] insertTableData:mDic AndTableName:@"school_feed"];
}
return NO;
}
return YES;
}
插入表格数据的方法
- (void)insertTableData:(NSMutableDictionary *)mDictDetails AndTableName:(NSString*)table_name {
NSArray *arrAllKey = [mDictDetails allKeys];
NSString *key = @"";
NSString *values = @"";
for (NSInteger i = 0; i <arrAllKey.count ; i++) {
NSString *column = arrAllKey[i];
if ([key isEqualToString:@""]) {
key = column;
values = @"?";
} else {
key = [key stringByAppendingString:[NSString stringWithFormat:@",%@", column]];
values = [values stringByAppendingString:@", ?"];
}
}
NSString *query = [NSString stringWithFormat: @"INSERT OR REPLACE INTO %@ (%@) values(%@)", table_name, key, values];
const char *sql = [query UTF8String];
sqlite3_stmt *insertStatement; // statement created
if (sqlite3_prepare_v2(database, sql, -1, &insertStatement, NULL) != SQLITE_OK) {
NSAssert1(0, @"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database));
}// if
for (int i = 0; i <arrAllKey.count; i++) {
NSString *column = arrAllKey[i];
NSString *strKeys = [NSString stringWithFormat:@"%@", [mDictDetails objectForKey:column]];
sqlite3_bind_text(insertStatement, i + 1, [strKeys UTF8String], -1, SQLITE_TRANSIENT);
}
sqlite3_step(insertStatement);// executing query
sqlite3_finalize(insertStatement); // finalizing statement
}
添加代码[数据库连接] insertTableData:MDIC AndTableName:@ “school_feed”];' – iphonic
@iphonic:问题更新 –
它看起来像你这样做不对于'key'和'values'有正确的字符串,确保不应该有任何逗号(“,”),或者以逗号(“,”)结尾。例如,你的键和值应该看起来像这个'name,age'和'?,?'它不应该是',name,age,'或'',?,?,'这可能是你的情况。顺便说一句,为什么你不使用一个伟大的包装的sqlite请参见[this](https://github.com/ccgus/fmdb) – iphonic