2016-12-24 6 views
-4

データベースを作成します。それは将来、それを超えるかもしれない9つのテーブルを持っています。しかし、テーブルの構造(カラム数とカラム名)はすべてのテーブルで同じです。私は、テーブルの構造をコピーして名前を変更して使用するオプションがあることを知っていますが、それを正確に行う方法はわかりません。私のコードを減らすように関連する答えを教えてください。テーブル構造だけをコピーするには?

+0

あなたの目的は明確ではありません!後で同じ構造でデータベースに新しいテーブルを作成したいのですか?はいの場合、直面している問題は何ですか? –

+0

テーブルをコピーしてから、WHERE句を使用せずにDELETE(DROPではなく)をすべてコピーします。 –

+0

はい、私は同じ構造を持つ新しいテーブルを作成したいのです。問題は、私は正確に古いテーブルの構造を取得する方法を知らないアンドロイド@ahmad – mrunalinimunna

答えて

0

あなたは例えばPRAGMA table_info (<yourtable>)

介してベーステーブルから列を抽出することができ

String sqlstr = " PRAGMA table_info (" + table_name + ")"; 
     Cursor csr = db.rawQuery(sqlstr, null); 

結果cusorsは列の行を持っている: -

CID(ROWID)

(列名)

タイプ(列タイプなどINTEGER)

の一部なら... 1,2-さもなければ

PK(0でない場合、主キーの一部(1つがデフォルト値)(0 nullにすることができれば)にnotnull

dflt_value

これでSQLを構築できました。あなたは、新しいテーブル名にベーステーブル名を変更し、結果として得られるSQLを変更することができ

SELECT sql FROM sqlite_master WHERE type='table' AND name='<yourtable>' 

- :


別の方法としては、経由してテーブルを作成するために使用さSQLを抽出することができ。


第三の選択肢は、しかし、これは例えば、構造の完全な包括的コピーではありません

CREATE TABLE newtable AS SELECT * FROM basetable WHERE 0 

のようなものを使用してテーブルをコピーすることです主キーは作成されません。

関連する問題