3

ここでは、2 つのデータベースを使用してクエリを実行し、database1 のテーブルから別の database2 にデータをコピーします。ここでは、1 つのデータベースを開くことができますが、他のデータベースを開く際に問題が発生します。すべてに前もって感謝します。

CurrentStatus *status = [CurrentStatus sharedCurrentStatus];
    sqlite3 *database;
    sqlite3 *database1;
    sqlite3_stmt *statement;
    sqlite3_stmt *statement1;
    NSString *dbPath = [status.applicationDocumentDirectory stringByAppendingPathComponent:@"database.sqlite"];
    NSString *dbPath1 = [status.applicationDocumentDirectory stringByAppendingPathComponent:@"database1.sqlite"];

    if ((sqlite3_open_v2([dbPath UTF8String], &database, SQLITE_OPEN_READWRITE , NULL) == SQLITE_OK) && (sqlite3_open_v2([dbPath1 UTF8String], &database1, SQLITE_OPEN_READWRITE , NULL) == SQLITE_OK)) {

        NSString *sqlStr = [[NSString alloc] initWithFormat:@"select * from Login" ];
         NSString *sql = [[NSString alloc] initWithString:sqlStr];

                if ((sqlite3_prepare_v2(database, [sql UTF8String], -1, &statement, NULL) == SQLITE_OK)) {
                    NSLog(@"DB prepare_v2 Opening successfully");
                    if (sqlite3_step(statement) == SQLITE_ROW) {

                    }
                    else
                    {

                    }
                    sqlite3_finalize(statement);
        NSLog(@"DB Opening successfully");

               sqlite3_close(database);
    }else
    {
        NSLog(@"else DB Opening successfully");
    }
        sqlite3_close(database);
    }
4

3 に答える 3

2

あなたの仕事を達成するために似たようなことを試してください..

まず、「DB1」データベースを開き、次のステートメントを実行します。

ATTACH DATABASE "2ndDB.db" AS 2ndDB;

その後、CREATE TABLE 構文を使用できます。

CREATE TABLE newTableInDB1 AS SELECT * FROM 2ndDB.oldTableInMyOtherDB;

これにより、データが新しいデータベースに「コピー」されます

于 2013-10-25T05:36:31.857 に答える
1

database1 から必要なデータをコピーして、NSMutableDictionary に各行を追加し、それを NSMutableArray に追加します。ステートメントを閉じてリセットし、database2 を開いて NSMutableArray からデータをコピーします。その配列はデータベースとして機能します。

私はそれがあなたのために働くことを願っています..

于 2013-10-25T05:28:20.803 に答える