다음을 통해 공유


데이터 형식

SQLite에는 INTEGER, REAL, TEXT 및 BLOB의 네 가지 기본 데이터 형식만 있습니다. 데이터베이스 값을 반환하는 API object 는 이러한 네 가지 형식 중 하나만 반환합니다. 추가 .NET 형식은 Microsoft.Data.Sqlite에서 지원되지만, 값은 궁극적으로 이러한 형식과 네 가지 기본 형식 중 하나 간에 강제 변환됩니다.

닷넷 SQLite 비고
불리언 (Boolean) 정수 0 또는 1
바이트 정수
바이트[] BLOB
Char(문자) 텍스트 UTF-8
날짜 전용 텍스트 yyyy-MM-dd
날짜와 시간 텍스트 yyyy-MM-dd HH:mm:ss. FFFFFFF
DateTimeOffset (날짜 및 시간 오프셋) 텍스트 yyyy-MM-dd HH:mm:ss. FFFFFFFzzz
십진수 텍스트 0.0########################### 형식. REAL은 손실될 것입니다.
두 배 진짜
가이드 텍스트 00000000-0000-0000-0000-000000000000
Int16 정수
Int32 정수
Int64 정수
S바이트 (SByte) 정수
싱글 진짜
문자열 텍스트 UTF-8
TimeOnly 텍스트 HH:mm:ss.fffffff
TimeSpan 텍스트 d.hh:mm:ss.fffffff
UInt16 정수
UInt32 정수
UInt64 정수 큰 값에는 오버플로우가 발생합니다.

대체 형식

일부 .NET 형식은 대체 SQLite 형식에서 읽을 수 있습니다. 이러한 대체 형식을 사용하도록 매개 변수를 구성할 수도 있습니다. 자세한 내용은 매개 변수를 참조하세요.

닷넷 SQLite 비고
Char(문자) 정수 UTF-16
날짜 전용 진짜 줄리안 일 값
날짜와 시간 진짜 줄리안 일 값
DateTimeOffset (날짜 및 시간 오프셋) 진짜 줄리안 일 값
가이드 BLOB
TimeOnly 진짜 일 단위
TimeSpan 진짜 일 단위

예를 들어 다음 쿼리는 결과 집합의 REAL 열에서 TimeSpan 값을 읽습니다.

command.CommandText =
@"
    SELECT name, julianday(finished) - julianday(started) AS length
    FROM task
    WHERE finished IS NOT NULL
";
using (var reader = command.ExecuteReader())
{
    while (reader.Read())
    {
        var name = reader.GetString(0);
        var length = reader.GetTimeSpan(1);

        Console.WriteLine($"'{name}' took {length}.");
    }
}

열 형식

SQLite는 값 형식이 저장된 열이 아니라 값 자체와 연결된 동적 형식 시스템을 사용합니다. 원하는 열 형식 이름을 자유롭게 사용할 수 있습니다. Microsoft.Data.Sqlite는 이러한 이름에 추가 의미 체계를 적용하지 않습니다.

열 형식 이름은 형식 선호도에 영향을 미칩니다. 한 가지 일반적인 문제는 STRING 열 형식을 사용하여 값을 INTEGER 또는 REAL로 변환하여 예기치 않은 결과를 초래할 수 있다는 것입니다. 네 가지 기본 SQLite 형식 이름(INTEGER, REAL, TEXT 및 BLOB)만 사용하는 것이 좋습니다.

SQLite를 사용하면 길이, 정밀도 및 배율과 같은 형식 패싯을 지정할 수 있지만 데이터베이스 엔진에 의해 적용되지 않습니다. 앱은 이를 강제하는 것에 책임이 있습니다.

참고하십시오