0

一部のデータを 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

4 に答える 4

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");
        }
于 2012-09-11T06:30:06.100 に答える
0

データベースがドキュメント ディレクトリにコピーされていないと思います。

于 2012-05-08T11:49:29.657 に答える
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);
}    
于 2012-05-08T11:57:05.790 に答える
0

そのファイルへの書き込み権限を持っていても、アプリ バンドルに書き込むことはできません。ファイルを Library、Documents、または tmp ディレクトリに移動する必要があります。

于 2012-07-17T20:22:19.480 に答える