まずAndroid SQLiteデータベースを作成するするで作成したSQLiteOpenHelperクラスを継承したDatabaseHelper.javaのインスタンスを作成します。
このDataBaseHelperインスタンスのgetWritableDatabase()メソッドもしくはgetReadableDatabase()メソッドでSQLiteDatabaseインスタンスを取得します。
DatabaseHelper dbHelper = new DatabaseHelper(this); SQLiteDatabase db = dbHelper.getWritableDatabase();
SELECT文を実行するにはSQLiteDatabaseインスタンスのrawQuery()メソッドやquery()メソッドを使用します。
rawQuery()メソッド
Cursor rawQuery (String sql, String[] selectionArgs)引数sqlには、sql文を指定します。
引数selectionArgsにはsql文のパラメータ(?で指定)に置き換わる値を指定します。
query()メソッド
Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)
Cursor query(boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)引数distinctには、trueを指定すると検索結果から重複する行を削除します。
引数tableには、テーブル名を指定します。
引数columnsには、検索結果に含める列名を指定します。nullを指定すると全列の値が含まれます。
引数selectionには、検索条件を指定します。
引数selectionArgsには、検索条件のパラメータ(?で指定)に置き換わる値を指定します。
引数groupByには、groupBy句を指定します。
引数havingには、having句を指定します。
引数orderByには、orderBy句を指定します。
引数limitには、検索結果の上限レコードを数を指定します。
データベースからデータを取り出し、TextViewに表示するサンプルです。
MainActivity.java
package my.study.android;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
/* CreateDumyボタンClickリスナー */
private OnClickListener buttonCreateDumy_OnClickListener = new OnClickListener(){
public void onClick(View v) {buttonCreateDumyData_OnClick(v);}};
/* buttonRowQueryボタンClickリスナー */
private OnClickListener buttonRowQuery_OnClickListener = new OnClickListener(){
public void onClick(View v) {buttonRowQuery_OnClick(v);}};
/* buttonQueryボタンClickリスナー */
private OnClickListener buttonQuery_OnClickListener = new OnClickListener(){
public void onClick(View v) {buttonQuery_OnClick(v);}};
/*
* onCreate
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//
Button btnCreateDumy = (Button)this.findViewById(R.id.btnCreateDumy);
btnCreateDumy.setOnClickListener(buttonCreateDumy_OnClickListener);
Button btnRowQuery = (Button)this.findViewById(R.id.buttonRowQuery);
btnRowQuery.setOnClickListener(buttonRowQuery_OnClickListener);
Button btnQuery = (Button)this.findViewById(R.id.buttonQuery);
btnQuery.setOnClickListener(buttonQuery_OnClickListener);
}
/*
* ダミーデータ作成ボタン クリック処理
*/
private void buttonCreateDumyData_OnClick(View v){
DatabaseHelper dbHelper = new DatabaseHelper(this);
SQLiteDatabase db=dbHelper.getWritableDatabase();
try{
ContentValues values = new ContentValues();
for (int i=0; i<10; i++){
values.put("Name", "yan" + (i+1));
values.put("Tel", "000-000-0000");
values.put("Age", 20+i);
db.insert("MyTable", null, values);
values.clear();
}
}finally{
db.close();
}
}
/*
* RowQueryボタン クリック処理
*/
private void buttonRowQuery_OnClick(View v){
//SQL作成
StringBuilder sql = new StringBuilder();
sql.append(" SELECT");
sql.append(" No");
sql.append(" ,Name");
sql.append(" ,Tel");
sql.append(" ,Age");
sql.append(" FROM MyTable;");
//rawQueryメソッドでデータを取得
DatabaseHelper dbHelper = new DatabaseHelper(this);
SQLiteDatabase db=dbHelper.getReadableDatabase();
try{
Cursor cursor = db.rawQuery(sql.toString(), null);
//TextViewに表示
StringBuilder text = new StringBuilder();
while (cursor.moveToNext()){
text.append(cursor.getInt(0));
text.append("," + cursor.getString(1));
text.append("," + cursor.getString(2));
text.append("," + cursor.getString(3));
text.append("\n");
}
}finally{
db.close();
}
TextView lblList = (TextView)this.findViewById(R.id.labelList);
lblList.setText(text);
}
/*
* queryボタン クリック処理
*/
private void buttonQuery_OnClick(View v){
//queryメソッドでデータを取得
String[] cols = {"No","Name","Tel","Age"};
String selection = "No = ?";
String[] selectionArgs = {"5"};
String groupBy = null;
String having = null;
String orderBy = null;
DatabaseHelper dbHelper = new DatabaseHelper(this);
SQLiteDatabase db=dbHelper.getReadableDatabase();
try{
Cursor cursor = db.query("MyTable", cols, selection, selectionArgs, groupBy, having, orderBy);
//TextViewに表示
StringBuilder text = new StringBuilder();
while (cursor.moveToNext()){
text.append(cursor.getInt(0));
text.append("," + cursor.getString(1));
text.append("," + cursor.getString(2));
text.append("," + cursor.getString(3));
text.append("\n");
}
}finally{
db.close();
}
TextView lblList = (TextView)this.findViewById(R.id.labelList);
lblList.setText(text);
}
}
DatabaseHelper.java import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper {
/* データベース名 */
private final static String DB_NAME = "androidstudydb";
/* データベースのバージョン */
private final static int DB_VER = 1;
/*
* コンストラクタ
*/
public DatabaseHelper(Context context) {
super(context, DB_NAME, null, DB_VER);
}
/*
* onCreateメソッド
* データベースが作成された時に呼ばれます。
* テーブルの作成などを行います。
*/
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "";
sql += "create table MyTable (";
sql += " No integer primary key autoincrement";
sql += ",Name text not null";
sql += ",Tel text";
sql += ",Age integer";
sql += ")";
db.execSQL(sql);
}
/*
* onUpgradeメソッド
* onUpgrade()メソッドはデータベースをバージョンアップした時に呼ばれます。
* 現在のレコードを退避し、テーブルを再作成した後、退避したレコードを戻すなどの処理を行います。
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
main.xml(MainActivityのレイアウト)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:id="@+id/labelList">
</TextView>
<Button
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:id="@+id/btnCreateDumy" android:text="CreateDumy">
</Button>
<Button
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="rowQuery()" android:id="@+id/buttonRowQuery">
</Button>
<Button
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="query()" android:id="@+id/buttonQuery">
</Button>
</LinearLayout>
【関連項目】
Android SQLiteデータベースを作成する
Android SQLiteのGUIツール
Android データベースにデータを書き込む(Insert、Update、Delete)
Android データベースのデータを読み込む(Select)
Android SQLiteデータベースを作成する(SQL文をリソースファイルに定義する)
0 件のコメント:
コメントを投稿