我想知道我们是否能够将SQlite库嵌入到Delphi可执行文件中,我们可以将我们的应用程序部署为单个.exe文件而不需要任何SQlite dll文件.
嵌入不是将sqlite dll文件保存到资源中,而是链接到Delphi可执行文件.
我需要一个SMALL/LIGHTWEIGHT DB控件(可能作为单个PAS文件提供),我可以直接集成到我的应用程序中.我需要在少量表中存储相对少量的数据,并且我想快速访问某些列.我知道Delphi 7有那么好的BDE,但我不想让用户在安装过程中遇到麻烦.
我使用的是Delphi 7.
编辑:
我想我问了错误的问题.那么,这就是我真正需要的:
如何将动态数据(未知数量的字段)存储到文件中?
我正在尝试更新一个遗留应用程序,该应用程序在一个黑客攻击的BDE Paradox文件系统中完成所有数据存储.该程序在某些狭窄的条件下运行良好,但它有严重的性能问题.
我想通过更新到更好的数据库系统来尝试改进.我需要的是一个本地数据库,最好是我可以将整个东西存储在一个文件中,而不是当前的"每个表一个或多个文件"系统.它必须支持外键关系和表索引,并且必须能够从具有数十万个元素的表的查询中快速返回结果.
最后一个很重要.当前系统已编入索引,但这似乎并不重要.所有查询似乎都在O(N)时间内运行,其中N是表的总大小,当表开始变大时,它会变得非常慢.我不确定为什么,但这必须消失.
它必须在D2009及更高版本下工作.有人可以提供一些建议吗?
我正在使用Delphi 2009.我有一个非常简单的数据结构,有2个字段:
困难在于我可能有几百万条记录,因此它们的总大小可能超过10 GB.显然,我正在寻找一种磁盘解决方案,而不是内存解决方案.
我的程序需要根据关键字段随机检索这些记录.这就是需要尽可能高效的部分.
我应该将数据库用于这样一个简单的结构吗?如果是这样,哪个数据库最好处理这个并且最简单的实现?
或者,是否有一个简单的磁盘上数据结构,不需要一个完整的数据库,也可以工作?
好吧,我所需要的只是让我回到现实的一个答案.我一直在寻找比简单数据库更简单的东西.但是,如果不使用数据库,那么我意识到我已经用自己对另一个问题的答案回答了这个问题:小应用程序和工具的最佳数据库.
我的回答是DISQLite3为我指定有原因.这就是我实施的可能性.
一些可能的更好的答案.那很棒.我将能够尝试一些不同的方法来看看什么效果最好.
更多的考虑,我不得不改变GpStructuredStorage解决方案的接受答案.
就我而言,总计几千兆字节的一百万条记录将对数据库结构造成压力.具体来说,用于在大多数数据库中存储索引的B*树速度很快,但对于某些操作(如重新索引一百万个值)会减慢.
对于索引,你唯一能找到比B*更快的东西就是哈希表.这正是gabr建议添加到GpStructuredStorage解决方案中所提供的内容.我认为它将哈希值分段为一个4级目录结构的方式非常优雅.
我可以使用哈希解决方案的关键原因是我只需要通过密钥随机访问.我不需要按键排序.如果需要排序,则哈希表的速度增益将会丢失,数据库系统将成为无脑的赢家.
当我开始实现这个时,我应该对这个技术与数据库进行比较.也许我会与Firebird和SQLite进行比较,这两者都是值得对手的.
另外一个跟进:
我刚刚发现了A. Bouchez的Synopse Big Table,它专为速度而设计,几乎可以准确地满足我的问题规格.当我在几个月内完成实施时,我会先尝试一下,然后在这里报告我的结果.
稍后的后续(2015年7月)
我从未尝试过Synopse Big Table.到目前为止,我一直坚持使用我的B*树.但现在我升级到Delphi XE8并计划使用FireDAC和SQLite来使用数据库解决方案.
我正在寻找一种方法,我可以将数据库保存在一个文件中,没有托管它的服务器,并且能够使用ADO(在delphi中,特别是TADOConnection和/或TADOQuery).请原谅我在这一方面缺乏术语.我只熟悉SQL Server数据库,而不了解任何其他数据库.事实上,我知道读/写文件的唯一方法是纯文本,INI和XML.至于任何官方的"数据库",我什么都不知道.
所以我想要做的是将一个文件保存为数据库,类似于QuickBooks有一个单独的"公司文件".我不应该有任何东西来托管数据,例如SQL Server.它需要与ADO兼容,这样我就可以用简单的select,update,delete等它并不需要如此复杂的有关系,安全等,但它确实需要有一些相同的语法规则的SQL Server一样,诸如命令join,alter,distinct等.
我正在寻找最轻的方法来做到这一点.这些文件需要足够灵活,能够复制/粘贴(只要应用程序不使用它),类似于excel文件.其实,我最初的想法是使用Excel,因为我知道我可以使用ADO,但我也不想要求微软Excel的驱动程序(它必须假定微软Office/Excel中安装用户的计算机上).显然需要一些驱动程序,但我需要最兼容的标准方法.
我试过sqlite,通过使用多线程,只有一个线程可以同时更新数据库..我需要多线程同时更新数据库.是否有任何DB可以完成这项工作?
ps:我使用delphi6.
我发现sqlite可以支持多线程,
但是在我对asgsqlite的测试中,当一个线程插入时,其他线程将无法插入.
我还在测试.
我开发了C#应用程序,用于存储和检索SQL数据库中的数据.但是,当我的客户必须部署应用程序,他需要安装SQL Server Express 2008,这是它的requirement.Now他希望该软件没有额外的安装add-on.so我除了点网框架,不应该有任何安装额外安装.
我已经见过像某些数据库中SQL compact,SQL lite ,SQL CE and blackfishSQL,但我真的DONOT知道,做他们需要额外的安装和做什么努力,我必须做出根据我看着选定的数据库来改变我的整个代码这个
请大家帮帮我
delphi ×7
database ×6
sqlite ×3
ado ×1
components ×1
delphi-2009 ×1
delphi-2010 ×1
delphi-xe2 ×1
sql ×1
sql-server ×1