SQLite
■コマンドラインの操作
1.adbのパスを通す。
[スタートメニュー]から「コンピュータ」を右クリックし、[プロパティ]の「システムの詳細設定」で「環境変数」をクリック システム環境変数「path」を選択し、「編集」を押す。 「変数値」の最後に ; を加え、その後に、c:\android\sdk\platform-tools を追加。OKを押し閉じる。
2.エミュレータが起動している状態でコマンドプロンプトを開き、adb shell を行う。
スタートメニューから[すべてのプログラム]-[アクセサリ]-[コマンドプロンプト]でコマンドプロンプトを開き、「adb shell」を入力。
3.ファイル一覧を見るコマンド ls を行ってみる。その後、cd sdcard でsdcardのフォルダに移動する。
■sqlite3の操作
以下のコマンドを入力。
sqlite3 ファイル名
そして、SQLを入力し、操作する。
■SQL以外の sqlite3 の操作
.exit | 終了 |
.tables | テーブル一覧 |
.schema テーブル名 | スキーマの表示 |
.header ON または OFF | ヘッダ表示のON/OFF |
.explain ON または OFF | テーブル表示の際の整形 |
■sqliteのデータ型
TEXT テキスト |
INTEGER 符号付整数 |
REAL 浮動小数点数 |
BLOB Binary Large OBject |
NULL NULL |
■テーブルの作成
CREATE TABLE テーブル名(フィールド名1 データ型1 制約, フィールド名2 データ型2 制約, フィールド名3 データ型3 制約,,,, );
例 CREATE TABLE shouhin ( sid INTEGER PRIMARY KEY, sname TEXT, tanka INTEGER);
◎制約
primary key | プライマリキーとする |
not null | NULLを許可しない |
autoincrement | 自動連番 |
■レコード追加(INSERT)
レコードを一件追加する
INSERT INTO テーブル名 ( フィールド名 ,,, ) VALUES ( 値 ,,,)
フィールド名と値を対応させて記述する、
例: INSERT INTO shouhin (sid , sname , tanka ) VALUES ( 1, 'りんご', 200 );
■レコード検索(SELECT)
SELECT:レコードの検索を行う
全件、全項目表示
SELECT * FROM テーブル名;
例 SELECT * FROM shouhin;
■レコード変更(UPDATE)
レコードの内容を変更する
UPDATE テーブル名 SET フィールド名= ? , フィールド名 = ?,,, WHERE 条件;
例: UPDATE shouhin SET tanka = 100 WHERE sid = 1;
注意:WHERE をつけない場合、全レコードが対象となる
■レコード削除(DELETE)
レコードを削除する
DELETE FROM テーブル名 WHERE 検索条件;
例: DELETE FROM shouhin WHERE sid = 3;
注意:WHERE をつけない場合、全レコードが対象となる。
■Androidでのsqliteの使用
1.SQLiteOpenHelperを継承したクラスを作成(例:DbHelper)
そのクラスのonCreateで新規テーブルを作成するようにする(最初にファイルを作成するときに呼ばれる)
public void onCreate(SQLiteDatabase db) { String sql = "create table shouhin(sid integer primary key,sname text,tanka integer)"; db.execSQL(sql); }
2.作成したクラスのインスタンスを生成
フィールドとして DbHelper クラスを宣言
public class MainActivity extends Activity { private DbHelper dbHelper;
onCreate内でインスタンスを生成
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); dbHelper = new DbHelper(this,"hanbai.db",null,1); }
※コンストラクタの 1 はバージョン
3.追加、更新、削除などの処理
単純な追加の例
String sql ="insert into shouhin( sname,tanka) values ('りんご',100)"; SQLiteDatabase db = dbHelper.getWritableDatabase(); db.execSQL(sql);
ファイルは /data/data/(パッケージ名)/databases に保存される。
変数の値を使用した例
String sql ="insert into shouhin( sname,tanka) values (?,?)"; Object[] params = new Object[]{sname,tanka}; SQLiteDatabase db = dbHelper.getWritableDatabase(); db.execSQL(sql,params);
4.データ取得処理
※下記ソースの前提としてListViewに adapter を設定しています
フィールド
private ArrayAdapter<string> adapter;
onCreate内
ListView listview = (ListView)findViewById(R.id.listView1); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1); listview.setAdapter(adapter);
単純なデータの取得
SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cur = db.rawQuery("select * from shouhin", null); while (cur.moveToNext()){ adapter.add(cur.getString(1)); }
※項目位置の番号は cur.getColumnIndex("sname") で取得可能
パラメータの指定
SQLiteDatabase db = dbHelper.getReadableDatabase(); String[] params = {"150"}; Cursor cur = db.rawQuery("select * from shouhin where tanka >= ?",params );