Notice
Recent Posts
Recent Comments
Link
JY Tech
[SQL, java, android] 변수에 값을 sql에 넣기 본문
먼저 db에 다음과 같은 데이터가 있다고 가정해보자
Name | Date | Kg |
홍길동 | 2024-01-12 | 77.3 |
홍길동 | 2024-01-15 | 77.5 |
String dateVal="2024-01-12"
DataBaseHelper dbHelper = new DataBaseHelper(context);
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.rawQuery("SELECT Kg FROM weight WHERE Date=dateVal", null);
그리고 자바(안드로이드)에서 위와 같은 코드로 데이터를 가져온다고 가정하자
아마 오류가 생길 것이다.
sql에 직접적으로 값을 전달하려고 해서 그렇다.
여러가지 방법이 있겠지만 ?를 넣는게 방법이다.
위 코드를 그런식으로 수정하면
String dateVal="2024-01-11"
DataBaseHelper dbHelper = new DataBaseHelper(context);
SQLiteDatabase db = dbHelper.getReadableDatabase();
String query = "SELECT Kg FROM weight WHERE Date=?";//이렇게 변수를 직접 전달하지 말고 ?로 전달
Cursor cursor = db.rawQuery(query, new String[]{selectedDate}); //이곳에서 ?에 들어갈 값을 넣어주기
이렇게 파리미터를 ?로 치환하는걸 '파라미터 바인딩'이라고 한다.
이러한 방식은 SQL인젝션에 효과적으로 대응할 수 있는 방법 중 하나이다
(SQL인젝션은 추후 다시 다루겠다)
'Programming > Study' 카테고리의 다른 글
[Android]리사이클러뷰 데이터 갱신 (1) | 2024.01.25 |
---|---|
[안드로이드]MPAndroidchart사용하기(기본세팅) (0) | 2023.12.16 |
구글의 대화형 AI 바드(Bard) 사용후기 (1) | 2023.06.08 |
Voting (0) | 2023.02.22 |