サンプルプログラム工場

AAKAKA Appで使われているプログラムのサンプルコードをそのまま公開!

サンプルプログラム工場 > android > AndroidでSQLiteのデータベースで読み書きサンプル#trySqLite00
Google Play AAKAKAxSOFTへ

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

実行ファイル(APK)やサンプル(zip)をダウンロードする
trySqLite00の実行イメージ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) {
			// いまんとこ特にすることないよ
		}
	}
}
APKファイルをダウンロード サンプルプロジェクトをダウンロード

, , ,

AndroidでXMLの保存/読み込み/追加書き込みサンプル#tryXml00 Androidでコンパス/方位磁針を作るサンプル#tryCompass00

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>