MDBHelper.class
package com.efolab.mdbhelper;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
import android.widget.Toast;
public class MDBHelper extends SQLiteOpenHelper {
private static final String CLASSNAME = MDBHelper.class.getSimpleName();
private static String name = "DB_"+CLASSNAME;
private static CursorFactory factory = null;
public static final String TABLE_NAME = "T_" + CLASSNAME;
public static final String SPACE = " ";
private String CREATE_TABLE = null;
@SuppressWarnings("unused")
private Context context;
private SQLiteDatabase mDB = null;
@param context
@param sql
@param version
public MDBHelper(Context context , String sql ,int version) {
super(context, name, factory, version);
TODO
this.context = context;
this.CREATE_TABLE = sql;
}
public void insert(String sql){
mDB = this.getWritableDatabase();
try{
mDB.execSQL(sql);
}catch(SQLException e){
Log.e(CLASSNAME,""+e);
}finally{
if(mDB.isOpen()){
mDB.close();
}
}
}
public List<Map<String,Object>> select(String sql){
List<Map<String,Object>> ret = new ArrayList<Map<String,Object>>();
HashMap<String,Object> map = null;
Cursor c = null;
try{
mDB = this.getReadableDatabase();
c = mDB.rawQuery(sql, null);
if(c.getCount() > 0){
c.moveToFirst();
for(int i=0;i<c.getCount();i++){
map = new HashMap<String , Object>();
for(int j=0;j<c.getColumnCount();j++){
map.put(c.getColumnName(j), c.getString(j));
}
ret.add(map);
c.moveToNext();
}
}
}catch(SQLException e){
Log.e(CLASSNAME,""+e);
}finally{
if(c != null && !c.isClosed()){
c.close();
}
if(mDB.isOpen()){
mDB.close();
}
}
return ret;
}
public int getCount(){
int ret = 0;
Cursor c = null;
String sql = "select count(*) from" + SPACE + TABLE_NAME +";";
try{
mDB = this.getReadableDatabase();
c = mDB.rawQuery(sql, null);
c.moveToFirst();
ret = c.getInt(0);
}catch(SQLException e){
Log.e(CLASSNAME,""+e);
}finally{
if(c != null && !c.isClosed()){
c.close();
}
if(mDB.isOpen()){
mDB.close();
}
}
Log.v("",""+ret);
return ret;
}
テーブルの存在確認
private boolean isTableExists(SQLiteDatabase db, String name) {
boolean ret = false;
String kakunin_sql = "select count(*) from sqlite_master where type='table' and name= '"
+ name + "';";
Cursor c = null;
try{
c = db.rawQuery(kakunin_sql, null);
c.moveToFirst();
Log.v("DbConnection", "テーブル存在確認結果:" + c.getInt(0));
if (c.getInt(0) == 1) {
ret = true;
}
}catch(SQLException e){
Log.e(CLASSNAME,""+e);
}finally{
if(c != null && !c.isClosed()){
c.close();
}
}
return ret;
}
@Override
public void onCreate(SQLiteDatabase db) {
try {
db.execSQL(CREATE_TABLE);
} catch (SQLException e) {
Log.e(CLASSNAME, "e" + e);
}
if(isTableExists(db, TABLE_NAME)){
Log.v(CLASSNAME,"テーブル生成完了");
}else{
Log.e(CLASSNAME,"onCreateでテーブルを生成できませんでした");
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Toast.makeText(context, "onUpdate", Toast.LENGTH_SHORT).show();
String sql = "DROP TABLE IF EXISTS " + TABLE_NAME;
try{
db.execSQL(sql);
this.onCreate(db);
}catch(SQLException e){
Log.e(CLASSNAME,""+e);
}
}
}