10

Androidでsqlliteデータベースを作成したと思いますが、挿入を行うたびに、列が存在しないと主張します。スキーマを表示するにはどうすればよいですか? オブジェクトの作成時に onCreate メソッドが呼び出されますか?

4

3 に答える 3

13

コードでそれを行うことができます。Sqlite には、スキーマ情報を保持する「sqlite_master」というテーブルがあります。

    /**
     * Get all table Details from the sqlite_master table in Db.
     * 
     * @return An ArrayList of table details.
     */
    public ArrayList<String[]> getDbTableDetails() {
        Cursor c = db.rawQuery(
                "SELECT name FROM sqlite_master WHERE type='table'", null);
        ArrayList<String[]> result = new ArrayList<String[]>();
        int i = 0;
        result.add(c.getColumnNames());
        for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
            String[] temp = new String[c.getColumnCount()];
            for (i = 0; i < temp.length; i++) {
                temp[i] = c.getString(i);
            }
            result.add(temp);
        }

        return result;
    }

より簡単な方法は、エミュレーターで実行することです。

  1. DDMS パースペクティブを開く
  2. 検索データ/データ/パッケージ名/データベース/YOURFILE
  3. 写真の右上にある pull from db ボタンをクリックします。

開ける ここに画像の説明を入力

于 2013-01-18T00:06:06.813 に答える
1

データベースのスキーマを調べる別の方法はadb shell、デバイス(またはエミュレーター)を調べることです。sqliteのコマンドラインを次のコマンドで起動し、コマンドプロンプトで入力しますsqlite3 <path to your database>.schema

参照: http ://developer.android.com/tools/help/sqlite3.html

于 2013-01-18T00:39:36.580 に答える