1
に挿入データは、私はテーブルからデータを選択しようとした一方で:SQLiteのSELECTデータベース
NSMutableArray *tmpArray = [[NSMutableArray alloc] init];
if (sqlite3_open([path UTF8String], &database) == SQLITE_OK) {
const char *sql = "SELECT name FROM Artists ORDER BY name";
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, sql, -1, &statement, NULL) == SQLITE_OK) {
while (sqlite3_step(statement) == SQLITE_ROW) {
char *nameChars = (char *)sqlite3_column_text(statement, 0);
NSString *name = [NSString stringWithUTF8String: nameChars];
[tmpArray addObject:name];
}
}else {
NSLog(@"Error");
}
}else {
NSLog(@"Error1");
}
私はこれを選択し、私はこれで、データベース内の別の表にデータを挿入する時間で実行します。
-(void)insertAutpPlaylist:(NSString*)playlistName withPlaylist:(NSMutableArray*)songsArray{
if (sqlite3_open([dataPath UTF8String], &database) == SQLITE_OK) {
for (int i = 0 ; i < [songsArray count]; i++) {
SongItem *song = [songsArray objectAtIndex:i];
sqlite3_stmt *insertStmt = nil;
NSString *name = song.name;
if(insertStmt == nil)
{
NSString *statement = [NSString stringWithFormat:@"INSERT INTO %@ (name) VALUES (?)",playlistName];
const char *insertSql = [statement UTF8String];
if(sqlite3_prepare_v2(database, insertSql, -1, &insertStmt, NULL) != SQLITE_OK){
NSLog(@"Error while creating insert statement.");
insertStmt = nil;
continue;
}
sqlite3_bind_text(insertStmt, 1, [name UTF8String], -1, SQLITE_TRANSIENT);
if(SQLITE_DONE != sqlite3_step(insertStmt)){
//NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
NSLog(@"Error while inserting data.");
insertStmt = nil;
continue;
}
else{}
sqlite3_reset(insertStmt);
insertStmt = nil;
}
}
sqlite3_close(database);
}
}
を
このコードは、データを挿入せずに同じ時刻に選択し、挿入と選択が別のテーブルにある場合に問題ありません。
編集
私が作ってみる
私は「エラー」の出力から取得選択:のNSLog(「エラー」@)。編集2
私はコンソールで取得selectメソッドにsqlite3_errmsg(database)
を追加する場合:選択クエリの後
reason: 'Error while inserting data. 'database is locked'
あなたはそれについての火災の問い合わせの前にデータベースをオープンしていますか(sqlite3_open([/ * datab aseパス*/UTF8String]、&データベース)!= SQLITE_OK) – priyanka
2つの異なるスレッドから同時に2つの異なるテーブルになっていても、データベースにアクセスすることはできません。 – coder
私は選択するだけですか? – MTA