개인공부용123 프로그래밍 블로그

[안드로이드 스튜디오] 데이터베이스 -3- 본문

Android Studio

[안드로이드 스튜디오] 데이터베이스 -3-

개인공부용123 2016. 11. 4. 23:42

SQL을 메소드 호출로 실행하기


exclSQL()이나 rawQuery()메소드에 인자로 전달하는 SQL은 완벽한 하나의 문자열이여야 하지만 ?문자를 대체하는 파라미터를 같이 전달하여 실행할 수 있습니다. 

이와 비슷한 방식으로 SQL을 하나의 문자열이 아닌 여러개의 파라미터로 나누어 구분하고 이들을 파라미터로 전달하는 방식이 있습니다.


[ A P I ]

long insert(String table, String nullColumnHack, ContentValues values)

int update(String table, ContentValues values, String whereClause, String[] whereArgs)

int delete(String table, String whereClause, String[] whereArgs)


insert()메소드는 데이터베이스에 데이터를 추가하는 기능을 합니다.


-insert메소드의 인자-
첫번째 인자: 데이터베이스 내에 있는 테이블의 이름

두번째 인자:  null값이들어간다면 어떤값을 줄지

세번째 인자: 레코드의 필드값을 담은 ContentValues객체

-update메소드의 인자-
첫번째 인자: 데이터베이스 내에 있는 테이블의 이름

두번째 인자:  레코드의 필드값을 담은 ContentValues객체

세번째 인자: where조건절

네번째 인자: where조건절의 ?에 해당하는 인자


-delete메소드의 인자-
첫번째 인자: 데이터베이스 내에 있는 테이블의 이름

두번째 인자: where조건절

세번째 인자: where조건절의 ?에 해당하는 인자


- 코            제 -



private int insertRecordParam(String name) {
int count = 1;
ContentValues recordValues = new ContentValues();

recordValues.put("name", "Rice");
recordValues.put("age", 43);
recordValues.put("phone", "010-3322-9811");
int rowPosition = (int) db.insert(name, null, recordValues);

return count;
}

private int updateRecordParam(String name) {
ContentValues recordValues = new ContentValues();
recordValues.put("age", 43);
String[] whereArgs = {"Rice"};

int rowAffected = db.update(name,
recordValues,
"name = ?",
whereArgs);

return rowAffected;
}

private int deleteRecordParam(String name) {
String[] whereArgs = {"Rice"};

int rowAffected = db.delete(name,
"name = ?",
whereArgs);

return rowAffected;
}



[ A P I ]

Cursor query(...)


query의 인자들이 많이 있지만 자세한 것은 https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html

를 참고하시면 됩니다.


- 코            제 -


private void executeRawQueryParam2() {
String[] columns = {"name", "age", "phone"};
String whereStr = "where age > ?";
String[] whereParams = {"30"};
Cursor c1 = db.query(TABLE_NAME, columns,
whereStr, whereParams,
null, null, null);

int recordCount = c1.getCount();
println("cursor count : " + recordCount + "\n");

for (int i = 0; i < recordCount; i++) {
c1.moveToNext();
String name = c1.getString(0);
int age = c1.getInt(1);
String phone = c1.getString(2);

println("Record #" + i + " : " + name + ", " + age + ", " + phone);
}

c1.close();

}

-query메소드의 인자-


첫번째 인자는 데이터베이스 내의 테이블명


두번째 인자는 SQL의 select절과 유사한 기능


세번째 인자는 SQL의 where절과 유사한 기능


네번째 인자는 세번째 인자의 ?에 해당하는 인자


그뒤의 인자들은 group by, having, orderBy, limit의 값이고 limit는 조회할 레코드의 수를 제한하기 위해 사용되고 나머지 group by, having, orderBy은 SQL문의 기능과 같습니다.


※ Do it 안드로이드 앱 프로그래밍 참조하였습니다.