2012-05-13 20 views
-2

可能性の重複:
How do I list the tables in a SQLite database fileデータベースからすべてのテーブルを取得するにはどうすればよいですか? (アンドロイド、SQLiteの)

私は、Androidデバイスを使用して簡単なデータベースを作成するためのシンプルなインターフェイスを作成しようとしています。たとえば、映画の私の家のコレクションをデータベースに挿入するためのプログラム。多分私は最初から間違っていますが、これは私の試行です:

ここで私はフィールドからデータを取得し、それらを新しいテーブルに挿入します。

 EditText title = (EditText)findViewById(R.id.Title); 
     String Title = title.getText().toString(); 

     EditText d = (EditText)findViewById(R.id.director); 
     String Director = d.getText().toString(); 

       SQLiteDatabase db = openOrCreateDatabase("Films", MODE_PRIVATE, null); 
     db.execSQL("CREATE TABLE IF NOT EXISTS " + Title + " (Title VARCHAR, Director VARCHAR);"); 
     db.execSQL("INSERT INTO " + Title + "(Title) VALUES('" + Title + "');"); 
     db.execSQL("INSERT INTO " + Title + " (Director) VALUES('" + Director + "');"); 
     db.close(); 

したがって、新しいタイトルごとに新しいテーブルを作成します。しかし、これらのテーブルをすべて、リストのような新しいアクティビティで印刷する必要があります。しかし、データベースからすべてのテーブルを取得する方法はわかりません。

私は、コマンドが見つかりました:

SQLiteDatabase db = openOrCreateDatabase("Films", MODE_PRIVATE, null); 
Cursor c = db.rawQuery("SELECT * FROM tablename", null); 

をしかし、それは私がその名前を知っている場合は、1つのテーブルに対してのみ動作し、私は必要なの彼らからすべてのテーブルとデータを取得することです。

お願いします。この使用

答えて

2

クエリを実行:

Cursor c = db.rawQuery("SELECT * FROM films.sqlite_master WHERE type='table'",null); 

EDIT

は、私は、これはAndroidとrawQueryがすでにテーブル名を持ったことを忘れてしまいました。これはうまくいくはずです:

Cursor c = db.rawQuery("SELECT * FROM sqlite_master WHERE type='table'",null); 
+0

ああ、私はこれを試しましたが、DDMSは "No such table films.sqlite_master"と言っているので、テーブル名films.sqlite_masterと考えています。 –

+0

'' SELECT * FROM sqlite_master WHERE type = 'table' "'を試してみてください。私たちがアンドロイドを話していることを忘れてしまった。 – Barak

+0

ありがとうございます!ここでは、これらのテーブルをどのように並べ替えるか、それらのテーブルを操作する方法について考えていきます。 –

関連する問題