2017-11-12 18 views
0

2つのsqliteデータベースがあり、データベースAからデータベースBにテーブルをコピーしたい。データベースAの他のテーブルをコピーしないでください。 データベースをアタッチしようとしましたが、INSERTを使用しましたが、接続テーブルに「このようなテーブルはありません」という例外があります。 マイコード:Sqliteデータベースをアタッチし、テーブルAからテーブルBにデータを挿入

private final String TABLE_NAME = "LOAD_IMAGES"; 
private final String COLUMN_UNIT_ID = "UNIT"; 
private final String COLUMN_LOAD = "LOAD"; 

public void createTable(){ 
    String CREATE_TABLE = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (" 
      + COLUMN_UNIT_ID + " INTEGER NOT NULL, " 
      + COLUMN_LOAD + " INTEGER NOT NULL DEFAULT 0);"; 

    database.execSQL(CREATE_TABLE); 
} 

public void insertData() { 
    String path = App.filesDir + '/' + "data"; 
    database.execSQL("ATTACH DATABASE '" + path + "' AS data;"); 
    String ADD_DATA_INTO_TABLE = "INSERT INTO '" + TABLE_NAME + "'(" 
    + COLUMN_UNIT_ID + ", " + COLUMN_LOAD +") " +"SELECT " + 
    COLUMN_UNIT_ID + ", " + COLUMN_LOAD + " FROM 'data.IMAGES';"; 

} 

例外ログ:

android.database.sqlite.SQLiteException: no such table: data.IMAGES (code 1): , while compiling: INSERT INTO 'LOAD_IMAGES'(UNIT, LOAD) SELECT UNIT, LOAD FROM 'data.IMAGES'; 

私が書いてみる:

LOAD FROM data.IMAGES 

または

LOAD FROM 'data'.'IMAGES' 

または

LOAD FROM data'.'IMAGES 

ただし、ヒントは変更されません。第二のデータベース「画像」の

表構造:enter image description here

答えて

1
FROM 'data.IMAGES' 

これは普通のテーブル名として解釈されます。引用符を削除します。

+0

こんにちは、私はクエリを編集: '文字列ADD_DATA_INTO_TABLE = "INSERT INTO '" + TABLE_NAME + "'(" + COLUMN_UNIT_ID +"、 "+ COLUMN_LOAD +") "+ は+ COLUMN_UNIT_ID + "SELECT""、 " + COLUMN_LOAD + "from data.IMAGES;"; 'しかし、それは動作しません。 (UNIT、LOAD)SELECT UNIT、LOAD FROM data.IMAGES; ' – Anton

+0

明らかに、その他のデータベースファイルは存在しません。(SQLiteException:このようなテーブルはありません。data.IMAGES(code 1):コンパイル中に:INSERT INTO' LOAD_IMAGES 'その道で)。 –

+0

[OK]をクリックすると、データベースが接続されているかどうかを知ることができますか?たぶん、リスナー? – Anton

関連する問題