无法将数据INSERT到我的sqlite3数据库。 (苹果手机)

时间:2012-05-08 11:35:01

标签: iphone database sqlite insert

我将一些数据写入我的sqlite3数据库时遇到问题。问题是,在应用程序正在模拟器上工作,在INSERT之后我通过SELECT检查它,我能够在数据库中看到我的新数据。但在切换应用程序后,我正在丢失我的数据。我认为我没有法律写下这个文件的数据,但我检查了它,我有它。

当我在我的服务上工作时,我可以看到我的数据库中的数据,但是当我使用INSERT时,没有任何事情发生。

有没有人有同样的问题?有人可以帮我解决这个问题吗?

听到是INSERT的代码

NSString *insertStatement = [NSString stringWithFormat:@"INSERT INTO person (uniqueId, idn, heartP, sugar, data) VALUES (\"%i\", \"%@\", \"%@\", \"%@\", \"%@\");", uniqueIds, idns, heartPs, sugars, datas];

if(sqlite3_exec(database, [insertStatement UTF8String],NULL ,NULL ,nil)==SQLITE_OK){


    NSLog(@"well done");
}

}

4 个答案:

答案 0 :(得分:0)

我认为您的数据库不是文档目录中的副本。

答案 1 :(得分:0)

请检查此代码并检查您所犯的错误。我正在使用此代码,这对我有用。

sqlite3_stmt    *statement;

const char *dbpath = [databasePath UTF8String];

if (sqlite3_open(dbpath, &adddata) == SQLITE_OK)
{
    // NSLog(@"open");
    NSString *insertSQL = [NSString stringWithFormat: @"INSERT INTO contacts(FirstName,LastName,Company,Mobile,Home,Url,Street,City,State,Zip,Prefix,Suffix,Middle,JobTitle,Birthday,Note) VALUES (\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\")", firstName.text,lastName.text,companyName.text,mobileNumber.text,homeNumber.text,homeUrl.text,street.text,city.text,state.text,zip.text,prefix.text,suffix.text,middle.text,jobTitle.text,birthday.text,note.text];

    const char *insert_stmt = [insertSQL UTF8String];

    int c=sqlite3_prepare_v2(adddata, insert_stmt, -1, &statement, NULL);
    NSLog(@"%d",c);
    if (sqlite3_step(statement)==SQLITE_DONE)
    {
        alert=[[UIAlertView alloc]initWithTitle:@"alert" message:@"Data is added" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:@"ok", nil];
        [alert show];
        NSLog(@"%@",insertSQL);
        firstName.text = @"";

    } 
    else 
    {
        alert=[[UIAlertView alloc]initWithTitle:@"alert" message:@"Data is not added" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:@"ok", nil];
        [alert show];                 
    }
    sqlite3_finalize(statement);
    sqlite3_close(adddata);
}    

答案 2 :(得分:0)

即使您拥有该文件的写入权限,也无法写入您的应用包。您需要将文件移动到Library,Documents或tmp目录。

答案 3 :(得分:0)

试试这个,

sqlite3_stmt    *statement;
NSString *insertStatement = [NSString stringWithFormat:@"INSERT INTO person (uniqueId, idn, heartP, sugar, data) VALUES (\"%i\", \"%@\", \"%@\", \"%@\", \"%@\");", uniqueIds, idns, heartPs, sugars, datas];

sqlite3_prepare_v2(database, [insertStatement UTF8String],-1, &selectstmt, NULL);

       if(sqlite3_step(selectstmt)==SQLITE_DONE)
        {
            NSLog(@"insert successfully");
        }