
AndroidでSQLiteのデータベースで読み書きサンプル#trySqLite00


SQLiteのデータベースを使ってデータの読み書き。
やっぱりSQLiteが一番速いみたい。それに、SQL文使って検索ができるので、自分でそのあたりを作らなくていいぶん楽ちんだし。
Android標準ってのがやっぱ使いやすくていい。
データベースアダプターってのを作ってやると楽みたい。ってか、これは楽だな。
●検索した事
Android SQLite
Android Date 文字列に
Android Listview clear
ListView getAdapter
●開発環境
Eclipse IDE バージョン: 3.7 Indigo Service Release 2
ターゲットプラットフォーム: 2.1
API レベル: 7
package com.example.trysqlite00; import java.text.SimpleDateFormat; import java.util.Date; import android.os.Bundle; import android.app.Activity; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ListView; import android.support.v4.app.NavUtils; public class TrySqLite00Activity extends Activity { // データベースアダプタ private DatabaseAdapter mDatabaseAdapter; // コントロール private EditText mEditTextInput; // 入力用EditText private EditText mEditTextResult; // 結果表示用 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_try_sq_lite00); // コントローラーを取り出したおく this.mEditTextInput = (EditText)this.findViewById(R.id.editText1); this.mEditTextResult = (EditText)this.findViewById(R.id.editText2); // アダプタを作る this.mDatabaseAdapter = new DatabaseAdapter(this); // データベースの中身を表示する this.updateContent(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_try_sq_lite00, menu); return true; } // //////////////////////////////////////////////////////////// // 書き込みボタン public void onClick_write(View view) { // テキストを取り出す String text = this.mEditTextInput.getText().toString(); // 何か入ってる if (0 < text.length()) { // 中身をクリア this.mEditTextInput.setText(""); // データベースに書き込む this.mDatabaseAdapter.open(); this.mDatabaseAdapter.putText(text); this.mDatabaseAdapter.close(); // データベースの中身を表示する this.updateContent(); } } // //////////////////////////////////////////////////////////// // 削除 public void onClick_delete(View view) { // 内容全消し this.mDatabaseAdapter.open(); this.mDatabaseAdapter.deleteAll(); this.mDatabaseAdapter.close(); // 空にする this.mEditTextResult.setText(""); } // //////////////////////////////////////////////////////////// // データベースの内容を表示し直す public void updateContent() { // EditTextの中をクリア this.mEditTextResult.setText(""); // データベースオープン this.mDatabaseAdapter.open(); // 登録内容を全部取り出す Cursor cursor = this.mDatabaseAdapter.getAll(); // データがとれてるときだけ実行 if (cursor.moveToFirst()) { do { this.mEditTextResult.append("id:" + cursor.getInt(cursor.getColumnIndex(DatabaseAdapter.COL_ID)) + " " + cursor.getString(cursor.getColumnIndex(DatabaseAdapter.COL_TIME)) + "\n"); this.mEditTextResult.append( " " + cursor.getString(cursor.getColumnIndex(DatabaseAdapter.COL_TEXT)) + "\n"); } while (cursor.moveToNext()); } // データベースクローズ this.mDatabaseAdapter.close(); } } // //////////////////////////////////////////////////////////// // データベースアダプター // //////////////////////////////////////////////////////////// class DatabaseAdapter { // データベース名 private static final String DATABASE_NAME = "trysqlite00.db"; // コレのバージョンあげるとアップグレードコードを書かないとね private static final int DATABASE_VER = 1; // テーブル関係 public static final String TABLE_NAME = "memo"; public static final String COL_ID = "memo_id"; public static final String COL_TIME = "time"; public static final String COL_TEXT = "text"; protected Context mContext; // コンテキスト protected SQLiteDatabase mDatabase; // データベース本体 protected DatabaseHelper mDbHelper; // データベースヘルパー // //////////////////////////////////////////////////////////// // コンストラクタ public DatabaseAdapter(final Context context) { this.mDbHelper = new DatabaseHelper(context); } // //////////////////////////////////////////////////////////// // データベースヘルパーを開く public void open() { this.mDatabase = this.mDbHelper.getWritableDatabase(); } // //////////////////////////////////////////////////////////// // データベースヘルパーを閉じる public void close() { this.mDbHelper.close(); } // //////////////////////////////////////////////////////////// // データベースにテキストを書き込む public void putText(String text) { // コレの中に追加する値を書き込む ContentValues values = new ContentValues(); // 現在時刻 Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); values.put(COL_TIME, sdf.format(date)); // テキストを書き込む values.put(COL_TEXT, text); // テーブルに値を書き込む this.mDatabase.insert(TABLE_NAME, null, values); } // //////////////////////////////////////////////////////////// // テーブルの内容を全部消す public boolean deleteAll() { return 0 < this.mDatabase.delete(TABLE_NAME, null, null); } // //////////////////////////////////////////////////////////// // IDを指定して削除 public boolean delete(int id) { return 0 < this.mDatabase.delete( TABLE_NAME, COL_ID + " = " + id, null); } // //////////////////////////////////////////////////////////// // 全部取り出す public Cursor getAll() { return this.mDatabase.query(TABLE_NAME, null, null, null, null, null, null); } // //////////////////////////////////////////////////////////// // SQLite使うためのヘルパークラス // //////////////////////////////////////////////////////////// private static class DatabaseHelper extends SQLiteOpenHelper { // //////////////////////////////////////////////////////////// // コンストラクタ public DatabaseHelper(final Context context) { super(context, DATABASE_NAME, null, DATABASE_VER); } // //////////////////////////////////////////////////////////// // テーブルを作るために呼ばれる @Override public void onCreate(SQLiteDatabase db) { // テーブルを作ります。 db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + COL_TEXT + " TEXT NOT NULL," + COL_TIME + " TEXT NOT NULL);"); } // //////////////////////////////////////////////////////////// // テーブルのアップグレードが必要な時に呼び出される @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { // いまんとこ特にすることないよ } } }
AndroidでXMLの保存/読み込み/追加書き込みサンプル#tryXml00 Androidでコンパス/方位磁針を作るサンプル#tryCompass00