我早就鼓吹过:SQLite是最好的本地文件型数据库。
在Windows下,它只要一个几百K的DLL就可以驱动,管理工具也只是一 个几百K的EXE程序就行了。相比之下,ACCESS庞大得令人生厌,即使是一个OLE-DB驱动也有至少10M以上的size,更不用说Foxpro, Paradox……那一大堆的表文件了。当然,SQLite的性能还不能跟那个BT的BerkeleyDB相比——BDB根本不能算是一个完整的数据库,连 SQL都不支持。
不过因为VCL提供的BDE、ADO、DBX等开发手段都没有提供对SQLite的支持——PostgreSQL至少还可 以通过OLD-DB驱动用ADO方式连接。所以用Delphi或BCB访问SQLite还是比较麻烦的。我之前都只是在Python应用中使用 SQLite。
幸好开源社区很快为此提供了支持,那就是优秀的开源数据库控件包:ZEOSDBO。它基于VCL标准的数据库接口实现,可以像BDE、ADO、DBX那样使用这一组控件,它支持的数据库和开发工具有:
支持的数据库:Sybase/ASA、Oracle、MS SQL、MySQL、InterBase/Firebird、PostgreSQL、SQLite/3等。
支持的VCL开发工具:Delphi 5-10,BCB 5/6,Kylix 2/3,Lazarus等。
然 而因为版权的原因,我现在只使用CodeGear的免费开发工具:Turbo C++ Explorer(TCX)。由于免费版的License限制,不能在TCX中安装任何第三方控件,所以我无法直接使用ZEOSDBO。不过我既然已经大 言不惭地号称DELPHI专家多年,要是连这也搞不定,那也太没面子了吧。挖卡卡。
经过一番试验,这个问题最终还是得以解决。其实也没有什么技术含量,无非是麻烦一点罢了:
启动TCX,创建一个VCL应用,在Project里加入以下文件夹中的所有PAS文件:
ZEOSDBO\src\core
ZEOSDBO\src\dbc
ZEOSDBO\src\parsesql
ZEOSDBO\src\plain
然后在Project里加入 ZEOSDBO\src\component 文件夹中的必要文 件——用到哪几个控件就加哪几个控件的文件,比如常用的ZConnection.pas和ZDataset.pas,其它不必要的文件不用加入。特别是文 件名中包含"Editor"的属性编辑功能单元,因为它们用到了控件Design的一些东西,而这些在免费版的TCX中是没有的,加入这些单元将导致编译 失败。
加好文件以后暂时不要在程序中引用,而是先编译一下,生成必要的相关文件——如.hpp等。正常情况下除了会出现几个HINT或WARNING以外,都能成功编译。
之后就可以在程序中引用ZEOSDBO访问SQLite了。
Unit1.h内容大致如下(其中偷懒用了STL中的auto_ptr管理ZEOSDBO控件对象的生命周期):
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ZConnection.hpp>
#include <ZDataset.hpp>
#include <memory>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
private: // User declarations
std::auto_ptr<TZConnection> zConn;
std::auto_ptr<TZTable> tblPerson;
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
在Unit1.cpp中就可以如下代码所示访问SQLite了:
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner),
zConn( new TZConnection(this) ),
tblPerson( new TZTable( this) )
{
zConn->Protocol = "sqlite-3";
zConn->HostName = "localhost";
zConn->Database = ChangeFileExt( Application->ExeName, ".sqlite3" );
zConn->User = "";
zConn->Password = "";
zConn->Connect();
tblPerson->Connection = zConn.get();
tblPerson->TableName = "person";
tblPerson->Open( );
//...
}
最后再废话一句:SQLite可是开源免费跨平台的哦。
分享到:
相关推荐
用于ps上的panrone TCX 调色板 PANRONE
“TCX”则代表Textile Color Card eXtended,这是Pantone的另一种纺织品色彩标准,但具体含义在这个上下文中并未明确提及。通常情况下,TCX可能指的是用于棉或其他非涂层材料的颜色系统,不过在这里,我们主要讨论的...
生成的文件将在同一路径中保存为<tcx>-edit.tcx 。 行动 split_at 在参数位置拆分 tcx 文件。 它的格式应该是HH:MM:SS (从文件的开头)。 例子: python tcx-edit.py tcx_file split_at 00:15:10 01:15:00 它将...
3. 使用库:在Python脚本中导入tcx2rk模块,然后调用提供的函数进行TCX文件的读取和转换操作。 开发者在使用tcx2rk库时,需要注意处理可能出现的问题,例如TCX文件的兼容性、Runkeeper API的权限设置、网络连接问题...
相反,它使用正则表达式逐行解析文件中的元素。 因此,为了正确解析文件或流,应该对流进行格式化,以便每一行都有一个 XML 节点,因为 TCX 文件在从 Garmin Connect 导出时被格式化。 如有任何问题,请查阅 sample...
这种转换过程对于那些希望在不支持TCX格式的软件或平台中分析、整理或共享其运动数据的人非常有用。下面我们将深入探讨TCX文件格式、CSV文件格式以及如何进行转换。 **TCX文件格式** TCX是Garmin公司开发的一种XML...
"tcx-parser"是一个专门针对TCX文件的解析库,它的主要功能是将这些XML文件转换为Javascript对象,以便于开发者在Web应用中进行处理和分析。 这个开源项目主要服务于那些需要在JavaScript环境中处理Garmin设备生成...
不使用来自的官方 ANT 库,因为该许可证与开源项目不兼容。 由于目标格式tcx只能处理所有可用拟合消息的一小部分,因此仅实现所有拟合消息的一部分。 许可证:GPL3(或更高版本)主页: ://...
该软件包应该在您的打包系统中可用,因此根据您的操作系统,您应该能够使用apt-get install python-lxml , yum install python-lxml或类似的东西。 该库被标记为依赖项,因此,如果没有该库,请按照下面的安装说明...
如果您拥有GARMIN Connect帐户,则在选择活动时可以使用“ export to TCX功能。 (在将来的版本中,我想添加一个功能以从STRAVA下载)。 导入文件时,可以选择每个图表上显示的指标,并使用滑块来限制数据间隔范围...
如果心率信息包含在CSV文件中,但不会读取功率数据。 高程数据可能无法正确处理,但是大多数健身场所都会根据位置数据重新计算高程。用法 ./motoactv_tcx.py <CSV> | tidy -q -i -xml > output.tcx要求
runner-edit time -i activity.tcx -o activity_edited.tcx --time='+2hour'跑步者合并将文件中的心率数据合并到另一项活动中。 丢失的心率数据是使用插值的。 runner-merge -m main_activity.tcx -c cardio_...
TCX Message Box是一款基于MFC(C++ Windows编程框架)中的CWnd类派生出来的自定义消息框控件。它的设计目的是提供一种更加灵活且可定制化的对话框界面,以替代系统默认的消息提示框。在MFC中,CWnd是所有窗口对象的...
Gpx/Tcx 合并 ...有一个非常相似的项目,名为 ,它通过将 GPX 文件中的航点信息合并到 TCX 文件中来做类似的事情。 安装 要运行该程序,您的计算机上至少需要安装 Java Runtime Environment >= 6。 安
现在,您应该在数据目录中有一个目录“ Workouts”,其中包含tcx文件(以及包含一些其他数据的json文件,因此请将其保留在此处)。 安装节点等和程序包依赖项 在节点版本(14.15.1)上进行了测试 建议通过nvm安装...
iFit出于某种原因拒绝将Watts包含在锻炼导出tcx文件中,原因是Wats包含在csv中,但不能用于Strava或其他健身场所 这个脚本: 1. creates a dictionary of time(offset from start) : Watts for lookup 2. Converts...
TCX解析器 安装 玛文 < groupId>pl.jakubtrzcinski < artifactId>tcx-parser < version>1.0.2.RELEASE Gradle dependencies { implementation ' pl.jakubtrzcinski:tcx-parser:1.0.2.RELEASE ' } 用法 var...
python-tcxparser 建置...平均和最大节奏(骑自行车活动) 在心率区花费的百分比和时间安装从PyPI安装它: pip install python-tcxparser用法基本用法示例: >>> import tcxparser>>> tcx = tcxparser.TCXParser('/home
专家3 目录设置 您可能需要以下属性文件,具体取决于您要执行的操作: 下载garmin活动。 $ cat etc/garmin.properties # Credentials for garmin connect login. GARMIN_USERNAME = GARMIN_PASSWORD = 上载到...
TCX色卡提供了颜色代码和配方,便于在生产过程中实现精确的色彩匹配。 - TPX色彩系统:TPX代表了潘通Plus系列,这是潘通不断更新和扩展的颜色库,旨在满足现代设计需求。它包括了更丰富的色彩选择,适用于各种印刷...