SQLite有一个有趣的“功能”,让您可以在任何字段中存储任何内容,无论其数据类型如何.
http://www.sqlite.org/different.html#typing
我必须阅读一些外部创建的SQLite文件,这些文件是由(ab)使用这个“功能”创建的.它们有一个定义为VARCHAR(30)的字段,但用它来存储最多100个字符或更多的字符串.如果您直接调用SQLite DLL来存储数据,SQLite很乐意这样做而不会进行任何修剪.
我目前正在使用具有SQLite支持的DevArt UniDAC 3.70.0.19来读取这些文件,但是它非常合理地考虑了字段的大小,因此创建了一个长度为30个字符的TStringField对象.超出此30个字符限制的所有字符都无法访问.
我知道所有可用的SQLite Delphi解决方案,但有人可以告诉我哪些可以处理这个“功能”?
最佳答案 你可以使用任何直接访问层到sqlite引擎,没有任何TDataset层.
例如我们的开源包装器http://blog.synopse.info/post/2011/07/22/SynDBSQLite3%3A-SQLite3-direct-access
实际上,与大多数SQL数据库不同,SQLite不会根据列的声明类型限制可能插入到列中的数据类型.相反,SQLite使用动态类型.声明的列类型仅用于确定列的亲缘关系.没有Db.pas层的直接访问允许使用此独特功能.