database.insert()
과 함께 사용하면 Android의 ContentValues가 자동으로 콘텐츠를 탈출합니까?ContentValues를 통해 SQLite INSERT 삽입
예 : 자동으로 다른 시간에하지만 이스케이프처럼
String message = "This is a sample that doesn't have a single quote";
ContentValues values = new ContentValues();
values.put(DBManagement.MESSAGE, message);
values.put(DBManagement.TIME, (int) (System.currentTimeMillis()/1000));
database.insert(DBManagement.TABLE_NAME, null, values);
것 같습니다.
예, 저는 rawQuery
을 사용하고 입력을 매개 변수화하여 다른 쿼리에서 이스케이프 및 주입으로부터 보호합니다.
거래가 무엇입니까?
"시간이 지나면 자동으로 이스케이프되지만 다른 것은 자동으로 이스케이프 처리 된 것처럼 보입니다." - 언제? – CommonsWare
값이 이스케이프되지 않은 경우에 대한 예를 생각해 낼 수 있습니까? 내가 아는 바로는 준비된 문장이 SQLiteDatabase에 의해 사용되기 때문에 이스케이프가 필요하지 않다는 것이다. 방금 Jelly Bean 소스 코드를 확인하고 SQLiteDatabase.insert에서 SQLiteConnection.bindArguments로 모든 메서드 호출을 추적했습니다. 인수는 고유 코드에 개별적으로 전달되며 SQL 쿼리에 삽입되지 않습니다. – tiguchi
예. 다음과 같은 오류 메시지가 나타납니다 :'android.database.sqlite.SQLiteException : near "t": 구문 오류 : 컴파일 중 INSERT INTO 설정 SET value = '정말로 필요하다고 생각하지 않습니다', key = 'setting_option1' '. 참조되는 라인은'database.insert (....); 코드입니다. 제가 잘못 해석 했습니까? –