개인공부용123 프로그래밍 블로그
[안드로이드 스튜디오] 데이터베이스 -3- 본문
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()메소드는 데이터베이스에 데이터를 추가하는 기능을 합니다.
- 코 드 예 제 -
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 안드로이드 앱 프로그래밍 참조하였습니다.
'Android Studio' 카테고리의 다른 글
[안드로이드 스튜디오] 쓰레드 -2- (0) | 2016.11.08 |
---|---|
[안드로이드 스튜디오] 쓰레드 -1- (1) | 2016.11.07 |
[안드로이드 스튜디오] 메모장만들기 (1) | 2016.11.07 |
[안드로이드 스튜디오] 데이터베이스 -2- (0) | 2016.11.03 |
[안드로이드 스튜디오] 데이터베이스 -1- (0) | 2016.11.03 |