【问题标题】:iphone - inserting values into sqlite databaseiphone - 将值插入sqlite数据库
【发布时间】:2012-08-06 12:18:23
【问题描述】:

我试图在 iphone 应用程序中将值插入我的 sqlite 数据库,但没有成功:

insertSQL = [NSString stringWithFormat: @"INSERT INTO eventslist (date, title, description) VALUES ('%@', '%@', '%@')", dateString, title, descr];
const char *insert_stmt = [insertSQL UTF8String];
sqlite3_prepare_v2(eventsDB, insert_stmt, -1, &statement, NULL);

我的descr 变量包含一段带有特殊字符、换行符等的文本。我认为这是一个原因。我该如何解决?

【问题讨论】:

    标签: iphone objective-c ios xcode sqlite


    【解决方案1】:
    +(void)CheckConnection
    {
        NSArray *docpath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *docdir = [docpath objectAtIndex:0];
        dbpath=[docdir stringByAppendingPathComponent:databasename];
        BOOL success;
        NSFileManager *fm = [NSFileManager defaultManager];
        success=[fm fileExistsAtPath:dbpath];
        if(success)
        {
            return;
        }
        NSString *dbPathFromApp = [[[NSBundle mainBundle]resourcePath]stringByAppendingPathComponent:databasename];
        [fm copyItemAtPath:dbPathFromApp toPath:dbpath error:nil];
    }
    
    +(BOOL)Savedata:(NSDictionary*)dicval
    {
        [self CheckConnection];
        BOOL sucsess;
        sqlite3 *database;
    
        if (sqlite3_open([dbpath UTF8String], &database)==SQLITE_OK) {
            NSString *query=[NSString stringWithFormat:@"insert into emp_info values(NULL,'%@','%@','%@','%@')",[dicval valueForKey:@"name"],[dicval valueForKey:@"surname"],[dicval valueForKey:@"mobile_no"],[dicval valueForKey:@"city"]];
            const char *sqlStmt=[query UTF8String];
            sqlite3_stmt *cmpSqlStmt;
            int rv=sqlite3_prepare_v2(database, sqlStmt, -1, &cmpSqlStmt, NULL);
    
            sucsess=((rv ==SQLITE_OK)? YES : NO);
            sqlite3_step(cmpSqlStmt);
            sqlite3_finalize(cmpSqlStmt);
        }
        sqlite3_close(database);
        return sucsess;
    
    }
    

    【讨论】:

      【解决方案2】:

      此链接包含从数据库中创建、插入和检索数据,可能会有所帮助。

      Creating an SQLite3 database file through Objective-C

      首先创建数据库并打开它。然后只尝试将数据插入数据库。

      【讨论】:

        【解决方案3】:
        if(sqlite3_open([databasePath UTF8String],&db) == SQLITE_OK)
        {
            insertSQL = [NSString stringWithFormat: @"INSERT INTO eventslist (date, title, description) VALUES ('%@', '%@', '%@')", dateString, title, descr];
        
            char *errmsg=nil;
        
            if(sqlite3_exec(db, [insertSQL UTF8String], NULL, NULL, &errmsg)==SQLITE_OK)
            {
               NSLog(@"Row Inserted");
            }
        }
        sqlite3_close(db);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-02-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-10
          • 1970-01-01
          • 2016-04-07
          • 2017-05-26
          相关资源
          最近更新 更多