매개 변수는 SQL 삽입 공격으로부터 보호하는 데 사용됩니다. 사용자 입력을 SQL 문과 연결하는 대신 매개 변수를 사용하여 입력이 리터럴 값으로만 처리되고 실행되지 않도록 합니다. SQLite에서 매개 변수는 일반적으로 SQL 문에서 리터럴이 허용되는 모든 위치에서 허용됩니다.
매개 변수는 :, @, 또는 $ 중 하나로 접두어를 붙일 수 있습니다.
command.CommandText = "INSERT INTO user (name) VALUES ($name)";
command.Parameters.AddWithValue("$name", name);
.NET 값이 SQLite 값에 매핑되는 방법에 대한 자세한 내용은 데이터 형식 을 참조하세요.
잘림
TEXT Size 및 BLOB 값을 자르려면 이 속성을 사용합니다.
// Truncate name to 30 characters
command.Parameters.AddWithValue("$name", name).Size = 30;
대체 형식
경우에 따라 대체 SQLite 형식을 사용할 수 있습니다. 속성을 설정하여 이 작업을 수행합니다 SqliteType .
다음 대체 형식 매핑을 사용할 수 있습니다. 기본 매핑은 데이터 형식을 참조하세요.
| 가치 | SqliteType (SQL 데이터 유형) | 비고 |
|---|---|---|
| Char(문자) | 정수 | UTF-16 |
| 날짜 전용 | 진짜 | 줄리안 일 값 |
| 날짜와 시간 | 진짜 | 줄리안 일 값 |
| DateTimeOffset (날짜 및 시간 오프셋) | 진짜 | 줄리안 일 값 |
| 가이드 | 블롭 | |
| TimeOnly | 진짜 | 일 단위 |
| TimeSpan | 진짜 | 일 단위 |
command.CommandText =
@"
SELECT count(*)
FROM task
WHERE finished IS NULL
AND julianday('now') - julianday(started) > $expected
";
// Convert TimeSpan to days instead of text
command.Parameters.AddWithValue("$expected", expected).SqliteType = SqliteType.Real;
출력 매개 변수
SQLite는 출력 매개 변수를 지원하지 않습니다. 대신 쿼리 결과의 값을 반환합니다.
참고하십시오
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET