6-2 データベース 1.SQLite SQLを単純化した SQLite を使ってデータベースを操作 表「fruit」 id name price 0 りんご 150 1 オレンジ 200 2 なし 200 3 ぶどう 300 4 柿 100
表の作成・削除 データ操作 SQL文 表の作成 CREATE TABLE 表名(列名 型,…) データ操作 SQL文 表の作成 CREATE TABLE 表名(列名 型,…) 列の追加 ALTER TABLE 表名 ADD 列名 型,…) 表の削除 DROP TABLE 表名
データの追加・更新・削除 データ操作 SQL文 データ追加 INSERT INTO 表名 VALUES(値,値,…) データ操作 SQL文 データ追加 INSERT INTO 表名 VALUES(値,値,…) データ更新 UPDATE 表名 SET 列名=値 WHERE 条件 データ削除 DELETE FROM 表名 WHERE 条件
プログラム例(その1) package jp.eclipse; import android.app.*; import android.database.*; import android.database.sqlite.*; import android.os.*; import android.widget.*; public class DbCreateActivity extends Activity { ListView listV; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout LL= new LinearLayout(this); LL.setOrientation(LinearLayout.HORIZONTAL); setContentView(LL); listV=new ListView(this); String dbName="data/data/"+getPackageName()+"/sample.db";
プログラム例(その2) // Data Base Create SQLiteDatabase db= SQLiteDatabase.openOrCreateDatabase(dbName,null); String Q0="DROP TABLE IF EXISTS fruit"; String Q1="CREATE TABLE fruit"+ "(id INTEGER PRIMARY KEY, name STRING, price INTEGER)"; String[] Q2={"INSERT INTO fruit(id, name, price) VALUES(0,'りんご',150)", "INSERT INTO fruit(id, name, price) VALUES(1,'オレンジ',200)", "INSERT INTO fruit(id, name, price) VALUES(2,'なし',200)", "INSERT INTO fruit(id, name, price) VALUES(3,'ぶどう',300)", "INSERT INTO fruit(id, name, price) VALUES(4,'柿',100)"}; String Q3="SELECT * FROM fruit"; db.execSQL(Q0); db.execSQL(Q1); for(int i=0;i<Q2.length;i++) db.execSQL(Q2[i]); Cursor cr = db.rawQuery(Q3, null); startManagingCursor(cr); ArrayAdapter<String> ad =new ArrayAdapter<String> (this, android.R.layout.simple_list_item_1);
プログラム例(その3) while(cr.moveToNext()) { int i = cr.getColumnIndex("id"); int n = cr.getColumnIndex("name"); int p = cr.getColumnIndex("price"); int id=cr.getInt(n); String name =cr.getString(n); int price=cr.getInt(p); String str = id + " : " + name + " = " + price + " 円"; ad.add(str); } listV.setAdapter(ad); LL.addView(listV); db.close(); }
結果例 リストとして表示
「adb.exe」が見つからないとのエラーで動かないとき… ①マイコンピュータを右クリックしてプロパティを開く。 ②「システムの詳細設定」を選択する。 ③「詳細設定」タブの「環境変数」を開く。 ④「システム環境変数」の中から「path」という項目を探して選択し,「編集」をクリック。 ⑤変数値の最後にAndroid SDK の「platform-tools」フォルダの場所を書き込む。たとえば,c:\androidsdk/platform-toolsにフォルダがあったら, “;c:\androidsdk/platform-tools” を追加する。パスの前にセミコロン(;)を入れることに注意する。 ⑥「OK」ボタンをクリックしてウィンドウを閉じる。 ⑦「アクセサリ」の「コマンドプロンプト」を起動して, >path[ENTER] とキーインすると,⑤でキーインしたパスが表示されることを確認する。
2.条件による検索e 【Q3の文字列を以下のように書き直す。 SELECT * FROM fruit WHERE price>=200 id name price 0 りんご 150 1 オレンジ 200 2 なし 200 3 ぶどう 300 4 柿 100
3.名前による検索 【Q3の文字列を以下のように書き直す。 SELECT * FROM fruit WHERE name=‘なし’ id name price 0 りんご 150 1 オレンジ 200 2 なし 200 3 ぶどう 300 4 柿 100
4.データの一部で検索 【Q3の文字列を以下のように書き直す。 SELECT * FROM fruit WHERE name=‘%ど%’ id name price 0 りんご 150 1 オレンジ 200 2 なし 200 3 ぶどう 300 4 柿 100
5.値の順に並べる 【Q3の文字列を以下のように書き直す。 SELECT * FROM fruit ORDER BY price id name price 0 りんご 150 1 オレンジ 200 2 なし 200 3 ぶどう 300 4 柿 100
6.値の大きい順に並べる 【Q3の文字列を以下のように書き直す。 SELECT * FROM fruit ORDER BY price DESC 表「fruit」 id name price 0 りんご 150 1 オレンジ 200 2 なし 200 3 ぶどう 300 4 柿 100