nirasan's tech blog

趣味や仕事の覚え書きです。Linux, Perl, PHP, Ruby, Javascript, Android, Cocos2d-x, Unity などに興味があります。

Androidのデータベース取扱いチートシート

データベースのコネクション取得

// コネクション管理クラスの実装
public class DatabaseOpenHelper extends SQLiteOpenHelper {
    
    public static final String DATABASE_NAME = "master.db";
    public static final int DATABASE_VERSION = 1;
    
    public DatabaseOpenHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub

    }
}

public class MainActivity extends Activity {
    
    private DatabaseOpenHelper openHelper;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        // コネクション管理オブジェクトの取得
        openHelper = new DatabaseOpenHelper(this);
        // コネクションの取得
        SQLiteDatabase db = openHelper.getWritableDatabase();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        
        // コネクション管理オブジェクトの破棄
        openHelper.close();
    }
}

SQL実行

db.execSQL("CREATE TABLE tablename( col1 INT, col2 TEXT )");

SQL実行(プレースホルダ

db.execSQL(
    "INSERT INTO user(_id, name, age) VALUES (?, ?, ?)", 
    new Object[]{1, "USERNAME", 20}
);

INSERT

ContentValues values = new ContentValues();
values.put("name", "USERNAME");
values.put("age",  20);
long id = db.insert("user", null, values);

UPDATE

ContentValues values = new ContentValues();
values.put("age",  21);
db.update("user", values, "name = 'USERNAME'", null);

UPDATE(プレースホルダ

ContentValues values = new ContentValues();
values.put("age",  21);
db.update("user", values, "name = ?", new String[]{"USERNAME"});

DELETE

db.delete("user", "name = 'USERNAME'", null);

DELETE(プレースホルダ

db.delete("user", "name = ?", new String[]{"USERNAME"});

SELECT(rawQuery)

Cursor c = db.rawQuery("SELECT * FROM user WHERE _id = ?", new String[]{"1"});

SELECT(query)

Cursor c = db.query(
    "user", // テーブル名
    new String[]{"_id", "name", "age"}, // 取得する列(nullなら全部)
    "age > ?", // Where句
    new String[]{"20"}, // Where句の値
    null, // Group by 条件
    null, // Having 条件
    null, // Order by 条件
);

結果の取得

Cursor cursor = db.rawQuery("select * from users",null);
while (cursor.moveToNext()) {
    int    id   = cursor.getInt(cursor.getColumnIndex("_id"));
    String name = cursor.getInt(cursor.getColumnIndex("name"));
    Log.d("CURSOR", "id:" + id + ", name:" + name);
}