2013-07-24 2 views
0

나는 Dart에서 sqlite를 조작하기 위해 dart-sqlite을 사용하고 있습니다.다트의`DateTime` 인스턴스를 sqlite`timestamp` 필드에 저장하는 방법은 무엇입니까?

Sqlite는 timestamp 필드를 가지며 Dart의 유형은 DateTime입니다.

Uncaught Error: SqliteException: Invalid parameter type 
Stack Trace: 
#0  _bind (package:dart-sqlite/sqlite.dart:246:1) 
#1  Statement.execute (package:dart-sqlite/sqlite.dart:142:33) 
#2  Database.execute (package:dart-sqlite/sqlite.dart:78:31) 
#3  Database.execute (package:dart-sqlite/sqlite.dart:79:7) 

어떻게 문제를 해결하려면 : 나는 sqlite가에 DateTime 인스턴스를 삽입 할 때, 그것은의 오류가 발생합니다?

답변

3

SQLite only has direct support for a few datatypes. Quoting from their official documentation:

NULL. 값은 NULL 값입니다.

정수. 값은 부호가있는 정수이며 값의 크기에 따라 1, 2, 3, 4, 6 또는 8 바이트로 저장됩니다.

REAL. 값은 부동 소수점 값이며 8 바이트 IEEE 부동 소수점 숫자로 저장됩니다.

TEXT. 값은 데이터베이스 인코딩 (UTF-8, UTF-16BE 또는 UTF-16LE)을 사용하여 저장된 텍스트 문자열입니다.

BLOB. 값은 입력 된 그대로 저장되는 데이터 블롭입니다.

날짜 또는 시간을 직접 저장할 수단이 없다는 점에 유의하십시오. 그러나 을 사용하여 값의 정수 표현을 삽입 할 수 있습니다. 또한 작업하기가 더 쉬울 경우 문자열을 삽입 할 수도 있습니다.

실제로 바이너리 데이터를 삽입해야하는 경우 BLOB를 사용할 수 있지만 일반적으로 프로그램에서 의미 론적 의미가있는 것은 바람직하지 않습니다.

+0

당신 말이 맞습니다. 'millisecondsSinceEpoch'를 사용하여 숫자를 저장하는 것이 좋습니다. – Freewind

관련 문제