メニュー
E-Mail
|
SQLiteに接続
AndroidでSQLiteを扱います。
SQLiteからデータを取得して表示します。
● SQLiteOpenHelper
SQLiteOpenHelperを継承したクラスを作ります。
指定したDBのファイルがなかった場合に、ファイルを作成してくれます。
onCreateでSQLiteのファイルがなかった際の処理が実装できます。
ここでは、テーブルを作成して、データを挿入します。
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class MySQLiteOpenHelper extends SQLiteOpenHelper {
public MySQLiteOpenHelper(Context context, String name, CursorFactory factory,int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table ITEMS(ID INTEGER PRIMARY KEY AUTOINCREMENT,NAME TEXT);");
db.execSQL("insert into ITEMS(NAME) values('名前A');");
db.execSQL("insert into ITEMS(NAME) values('名前B');");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
|
● Activity
作成したSQLiteOpenHelperの継承クラスを生成します。
初回は、指定したDBファイルがないので、
ファイルが作成され、テーブルとデータが作成されます。
SQLiteDatabaseを生成し、データベースを操作します。
SQL文を発行して、結果をログに表示します。
import android.os.Bundle;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.util.Log;
import android.view.Menu;
public class SQLiteActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sqlite);
SQLiteDatabase sdb = null;
MySQLiteOpenHelper helper = new MySQLiteOpenHelper(SQLiteActivity.this,"test.db",null,1);
try{
sdb = helper.getWritableDatabase();
String sqlstr = "select * from ITEMS";
Cursor cursor = sdb.rawQuery(sqlstr,null);
cursor.moveToFirst();
for (int i = 0; i < cursor.getCount(); i++) {
Log.v("ID : ",cursor.getString(0));
Log.v("NAME : ",cursor.getString(1));
cursor.moveToNext();
}
cursor.close();
} catch(SQLiteException e) {
e.printStackTrace();
} finally {
if (helper !=null) helper.close();
if (sdb !=null) sdb.close();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_sqlite, menu);
return true;
}
}
|
|
|