Android演習

6-2 データベース
1.SQLite
SQLを単純化した SQLite を使ってデータベースを操作
表「fruit」
id
0
1
2
3
4
name
りんご
オレンジ
なし
ぶどう
柿
price
150
200
200
300
100
表の作成・削除
データ操作
表の作成
列の追加
表の削除
SQL文
CREATE TABLE 表名(列名 型,…)
ALTER TABLE 表名 ADD 列名 型,…)
DROP TABLE 表名
データの追加・更新・削除
データ操作
データ追加
データ更新
データ削除
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
表「fruit」
id
0
1
2
3
4
name
りんご
オレンジ
なし
ぶどう
柿
price
150
200
200
300
100
3.名前による検索
【Q3の文字列を以下のように書き直す。
SELECT * FROM fruit WHERE name=‘なし’
表「fruit」
id
0
1
2
3
4
name
りんご
オレンジ
なし
ぶどう
柿
price
150
200
200
300
100
4.データの一部で検索
【Q3の文字列を以下のように書き直す。
SELECT * FROM fruit WHERE name=‘%ど%’
表「fruit」
id
0
1
2
3
4
name
りんご
オレンジ
なし
ぶどう
柿
price
150
200
200
300
100
5.値の順に並べる
【Q3の文字列を以下のように書き直す。
SELECT * FROM fruit ORDER BY price
表「fruit」
id
0
1
2
3
4
name
りんご
オレンジ
なし
ぶどう
柿
price
150
200
200
300
100
6.値の大きい順に並べる
【Q3の文字列を以下のように書き直す。
SELECT * FROM fruit ORDER BY price DESC
表「fruit」
id
0
1
2
3
4
name
りんご
オレンジ
なし
ぶどう
柿
price
150
200
200
300
100