ここまでの記事は以下になります。この記事から見始めた方は以下の記事を参照いただければと思います。
=== 目次 ===
サンプルコードまとめ
ここまでの例ではinsert, update, delete, queryなどをSQLiteOpenHelper継承クラス外で行っていましたが、私はSQLiteOpenHelper継承クラスにまとめるのが好きです。その場合のサンプルコードは以下になります。
public class DatabaseManager extends SQLiteOpenHelper {
private final static String DATABASE_FILENAME = "sample.db";
private final static int DATABASE_VERSION = 1;
DatabaseManager(Context context) {
super(context, DATABASE_FILENAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String cmd = "create table test(id integer, str text)";
db.execSQL(cmd);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//必要があれば実装する。
}
void insertData(int _id, String _str) {
SQLiteDatabase db = getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("id", _id);
cv.put("str", _str);
db.insert("test", null, cv);
}
void updateText(int TargetId, String NewStr) {
SQLiteDatabase db = getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("str", NewStr);
db.update("test", cv, "id = "+TargetId, null);
}
void deleteData(int TargetId) {
SQLiteDatabase db = getWritableDatabase();
db.delete("test", "id = "+TargetId, null);
}
class DataStruct {
int Id;
String Str;
}
ArrayList<DataStruct> getData(String SearchStr) {
SQLiteDatabase db = getWritableDatabase();
ArrayList<DataStruct> result = new ArrayList<>();
Cursor c = db.query("test", null, "str = "+SearchStr, null, null, null, "id");
c.moveToFirst();
for(int i=0; i<c.getCount(); i++) {
int id = c.getInt(0);
String str = c.getString(1);
DataStruct ds = new DataStruct();
ds.Id = id;
ds.Str = str;
result.add(ds);
}
return result;
}
}
オススメの使用方法
オススメの使用方法としては、上記のDatabaseManagerクラスのオブジェクトを以下の記事で紹介したApplication継承クラスに持たせる方法です。 以下がサンプルコードです。public class Common extends Application {
DatabaseManager dm;
@Override
public void onCreate() {
super.onCreate();
dm = new DatabaseManager(this);
}
}
このようにDatabaseManagerのオブジェクトを持っておけば、以下のように簡単に使用することができます。
public class MainActivity extends AppCompatActivity {
Common c;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
c = (Common)getApplication();
c.dm.insertData(1, "test");
}
}
まとめ
ここまで、Androidアプリ開発におけるSQLiteの使用方法の基礎を紹介しました。SQLiteを使用できるようになると、大規模なデータも安定かつ高速に扱えるようになるため、是非習得しましょう!