2

I'm using dart-sqlite to operate sqlite in Dart.

Sqlite has a timestamp field, and Dart has a type of DateTime. But when I insert an DateTime instance to sqlite, it will throw an error of:

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) 

How to fix it?

4

1 回答 1

6

SQLite 仅直接支持少数数据类型。引用他们的官方文档:

无效的。该值为 NULL 值。

整数。该值是一个有符号整数,根据值的大小存储在 1、2、3、4、6 或 8 个字节中。

真实的。该值是一个浮点值,存储为一个 8 字节的 IEEE 浮点数。

文本。该值是一个文本字符串,使用数据库编码(UTF-8、UTF-16BE 或 UTF-16LE)存储。

斑点。该值是一团数据,完全按照输入的方式存储。

您会注意到没有直接存储日期或时间的方法。但是,您可以插入该值的整数表示形式,或许可以使用DateTimemillisecondsSinceEpochfromMillisecondsSinceEpochmethods。如果您更容易使用,您也可以插入一个字符串。

如果您确实必须插入二进制数据,您可以使用 BLOB,但对于在您的程序中具有语义意义的任何内容,这通常不是一个好主意。

于 2013-07-24T16:23:17.933 回答