1

私のコードは次のとおりです。

const char *sqlInsertString;
sqlite3_stmt *addStatement;
sqlInsertString=sqlite3_mprintf("insert into AnimalTable(name,propertyID,animalID,breed,dateofbirth,sex,notes,imageData) values" "('%s','%s','%s','%s','%s','%s','%s','%d')",nameString,propertyString,animalidString,breedString,dateofbirth,sexString,notesString,imageData);
    if (sqlite3_open([sqlFile UTF8String],&database)==SQLITE_OK) {
        sqlite3_prepare_v2(database, sqlInsertString, -1, &addStatement, NULL);
        if (sqlite3_step(addStatement)==SQLITE_DONE) {
            sqlite3_bind_blob(addStatement, 1, [imageData bytes], [imageData length], NULL);
            sqlite3_finalize(addStatement);
            NSLog(@"Data saved");

        }
        else
            NSLog(@"Some Error occurred");
    }

    sqlite3_close(database);

私は何か間違ったことをしていると思います、それを理解することはできません。sqliteにデータを追加するたびに、エラーが発生したことを示しています。また、例外NSInternalInconsistencyExceptionが発生し、そのようなテーブルはありません:AnimalTable。しかし、AnimalTableは存在し、sqlmanagerでクエリを実行すると、正しく実行されます。

4

1 に答える 1

1

次のコードは、blobタイプのデータストアを格納するために使用されます。

これがあなたの助けになりますように

 if(sqlite3_prepare_v2(database, sqlInsertQry, -1, &compiledStmt, NULL) == SQLITE_OK ){
                for (NSDictionary *dObj in arForData) {
                     sqlite3_bind_blob(compiledStmt,1,[[dObj valueForKey:@"NotiData"] bytes],[[dObj valueForKey:@"NotiData"] length],NULL);
                    PUT_Date(2,@"fireDate");


                    NSUInteger err = sqlite3_step(compiledStmt);
                    if (err != SQLITE_DONE){
                        //NSLog(@"error while binding %d %s",err, sqlite3_errmsg(database));
                        //NSLog(@"%@",dObj);
                    }
                    sqlite3_reset(compiledStmt);
                }
                sqlite3_finalize(compiledStmt);     
            } 
于 2012-04-11T12:15:26.247 に答える