我想在我的sqlite表中插入文本,它包含大量(大约1000个字符) 这是我的代码
//创建功能
//createdb here
if (sqlite3_open([dbPathString UTF8String], &database)==SQLITE_OK) {
const char *sql_stmt="CREATE TABLE IF NOT EXISTS mytablename(description TEXT)";
sqlite3_exec(database, sql_stmt, NULL, NULL, &error);
sqlite3_close(database);
}
//插入
for (int i=0; i<_generalContentArray.count; i++)
{
char *error;
if (sqlite3_open([dbPathString UTF8String], &database)==SQLITE_OK)
{
NSString *query=[NSString stringWithFormat:@"INSERT INTO mytablename(description) values('%@')",[[_generalContentArray objectAtIndex:i]objectForKey:@"description"]];
const char *insert_stmt=[query UTF8String];
if (sqlite3_exec(database, insert_stmt, NULL, NULL, &error )==SQLITE_OK)
{
NSLog(@"Text added");
}
else
{
NSLog(@"Text not added");
}
sqlite3_close(database);
}
}
我的问题是它从不执行SQLITE_OK语句并且总是转到else语句,文本没有添加到我的表中,请帮忙
答案 0 :(得分:0)
你必须检查db是否存在。不是这个......
for (int i=0; i<_generalContentArray.count; i++)
{
char *error;
//you need to check db is exising or not
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *databasePath = [documentsDirectory stringByAppendingPathComponent:@"your db name"];
if (sqlite3_open([databasePath UTF8String], &database)==SQLITE_OK)
{
NSString *query=[NSString stringWithFormat:@"INSERT INTO mytablename(description) values('%@')",[[_generalContentArray objectAtIndex:i]objectForKey:@"description"]];
const char *insert_stmt=[query UTF8String];
if (sqlite3_exec(database, insert_stmt, NULL, NULL, &error )==SQLITE_OK)
{
NSLog(@"Text added");
}
else
{
NSLog(@"Text not added");
}
sqlite3_close(database);
}
}
像这样更改您的查询...
NSString *query=[NSString stringWithFormat:@"INSERT INTO mytablename('description') VALUES('%@')",[[_generalContentArray objectAtIndex:i]objectForKey:@"description"]];