Delphi7中不用控件连接sqlite
2019独角兽企业重金招聘Python工程师标准>>>
DELPHI 7 没有办法使用lib文件,这就有点麻烦,但是咱们也没有必要一个一个Query,那样太痛苦了。我当时就好痛苦。咱们可以借助第三方的包装类,有一些是收费的,但是也有一些免费的,具体的信息大家请查看下面的地址 http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers
我这里使用的是sqlite simple delphi 这是一个完全免费的包装类,大家可以到它的官方网站下载,http://www.itwriting.com/sqlitesimple.php
下来以后是一个压缩包里面是一个demo。咱们需要里面的两个文件。SQLite3.pas 跟 SQLiteTable3.pas ,把他们复制到工程目录下面,然后在需要操作库的单元文件里面 uses SQLiteTable3 ,然后大家请查看官方的事例代码:
procedure TForm1.btnTestClick(Sender: TObject);
var
slDBpath: string;
sldb: TSQLiteDatabase;
sltb: TSQLIteTable;
sSQL: String;
Notes: String;
begin
slDBPath := ExtractFilepath(application.exename)+'test.db';
sldb := TSQLiteDatabase.Create(slDBPath);
try
if sldb.TableExists('testTable') then
begin
sSQL := 'DROP TABLE testtable';
sldb.execsql(sSQL);
end;
sSQL := 'CREATE TABLE testtable ([ID] INTEGER PRIMARY KEY,[OtherID] INTEGER NULL,';
sSQL := sSQL + '[Name] VARCHAR (255),[Number] FLOAT, [notes] BLOB, [picture] BLOB COLLATE NOCASE);';
sldb.execsql(sSQL);
sldb.execsql('CREATE INDEX TestTableName ON [testtable]([Name]);');
//begin a transaction
sldb.BeginTransaction;
sSQL := 'INSERT INTO testtable(Name,OtherID,Number,Notes) VALUES ("Some Name",4,587.6594,"Here are some notes");';
//do the insert
sldb.ExecSQL(sSQL);
sSQL := 'INSERT INTO testtable(Name,OtherID,Number,Notes) VALUES ("Another Name",12,4758.3265,"More notes");';
//do the insert
sldb.ExecSQL(sSQL);
//end the transaction
sldb.Commit;
//query the data
sltb := slDb.GetTable('SELECT * FROM testtable');
try
if sltb.Count > 0 then
begin
//display first row
ebName.Text := sltb.FieldAsString(sltb.FieldIndex['Name']);
ebID.Text := inttostr(sltb.FieldAsInteger(sltb.FieldIndex['ID']));
ebNumber.Text := floattostr( sltb.FieldAsDouble(sltb.FieldIndex['Number']));
Notes := sltb.FieldAsBlobText(sltb.FieldIndex['Notes']);
memNotes.Text := notes;
end;
finally
sltb.Free;
end;
finally
sldb.Free;
end;
end;
这样操作起来是不是很简单,^_^
<4> PHP调用SQLite3 ,这个不用我多废话,请参看我写的《通过Apache + PHP5 + PDO 连接 SQLite3 数据库》一文。
<5>Visual Basic , 因为我没有仔细研究,我无发言权,请参看SQLite官方的资料
http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers
COM Wrappers / Visual Basic DLLs部分
<6>JAVA 请参看http://www.loveunix.net/bbs/index.php?showtopic=35051 帖子,讲述的比较详细。
第二部分 使用事务写库
事务的具体理论概念我不想多说了,如果不明白的请大家到GOOGLE搜索关键字“数据库事务”,能找到N多文章资料。我们使用VC++来做事例。还有使用到上面的两个函数
void WriteSqlite()
{
try
{
OpenSqlite();
execSQL("begin transaction;"); \\开始一个事务,记录操作
char strSQL[MAX_PATH];
sprintf(strSQL,"INSERT INTO Table_Name (nAction1, nAction2, nAction3) VALUES(%d,%d,%d)", szVar1,szVar2, szVar3,);
execSQL(strSQL);
execSQL("commit transaction;"); \\执行提交之前数据库自动保存用户对数据库操作序列。
return;
}
catch(...)
{
execSQL("rollback transaction;");
}
//Add custom code
}
本文至此而完,上述代码均在 Windows2000 Pro + VC++6 英文企业版本 + Delphi7 英文企业版 编译通过
转载于:https://my.oschina.net/u/1777508/blog/359149
Delphi7中不用控件连接sqlite相关推荐
- delphi多线程超时控Delphi7中Indy控件对于网络数据的接收
1.引言 随着我国经济和社会的发展,水资源的科学管理与合理配置显得越来越重要.而获取大量的.实时的.动态的水资源及其相关信息则是实现水资源科学管理的基础.传统的水资源信息获取采用人工抄取数据后逐级的方 ...
- vc mysql控件_VC++使用ActiveX控件连接和操作数据库
VS2008运用ActiveX控件连接和操作数据库关闭时一直有个内存释放的错误,好像使用VC6.0会多生成2个文件,就不会有问题. VC++使用ActiveX控件连接和操作数据库的方法分两种: 1.通 ...
- 嵌套母版页中的控件访问
嵌套母版页中的控件访问 左直拳 嵌套母版页中的控件访问很别扭. 如果一个内容页对应一个没有嵌套的母版页,访问这个母版页上的控件众所周知:类似(Button)Page.Master.FindContro ...
- Android中ExpandableListView控件基本使用
本文採用一个Demo来展示Android中ExpandableListView控件的使用,如怎样在组/子ListView中绑定数据源.直接上代码例如以下: 程序结构图: layout文件夹下的 mai ...
- android listview 滑动条显示_第七十六回:Android中UI控件之RecyclerView基础
各位看官们,大家好,上一回中咱们说的是Android中UI控件之ListView优化的例子,这一回咱们说的例子是UI控件之RecyclerView.闲话休提,言归正转.让我们一起Talk Androi ...
- LabVIEW中ActiveX控件、ActiveX服务器和类型库注册
LabVIEW中ActiveX控件.ActiveX服务器和类型库注册 如何在计算机上手动注册ActiveX控件(.ocx ).ActiveX服务器(.DLL和.EXE)以及类型库(.TLB )? 在L ...
- pyqt中treeview控件右键单击操作
pyqt中treeview控件右键单击操作 pyqt开发GUI的第一篇文章 问题描述 pyqt开发GUI的第一篇文章 用pyqt5开发了一款图像处理软件,记下一些曾经困扰我的一些问题,有不对之处还请大 ...
- 基于VB中WINSOCK控件的网上象棋系统的实现
本文发表在<微型机与应用>杂志2001年第3期. 基于 VB 中 WINSOCK 控件的网上象棋系统的实现 马根峰1 , 孙艳2 , 王平1 (1.重庆邮电学院自动化学院,重庆,4 ...
- VB.net数据库编程中DataGrid控件的使用技巧
VB.net数据库编程中DataGrid控件的使用技巧 如何用同一个DataGrid显示不同的数据表:如何用DataGrid显示主表/明细表的内容:如何用DataGrid分页显示或编辑数据表的记录.这 ...
最新文章
- AI机器学习科研助力 | 计算机科学方向一对一科研项目
- SqlHelper++
- 什么是TypeScript?为什么我要用它代替JavaScript? [关闭]
- 用 Java 实现断点续传 (HTTP)
- Spring Cloud Netflix项目进入维护模式之我见
- Frameless - 用于预览 iOS8 原型的浏览器
- base64的php文件上传,PHP传统文件上传和Base64位文件上传
- 史上最强福利,阿里云半价+Plesk免费2万台速抢!
- 前端学习(3039):vue+element今日头条管理-侧边菜单栏的展示和收缩
- Z-Stack通过按键中断实现长按功能
- sql按年、月、日、查询排序
- 【贪心】LeetCode 3. Longest Substring Without Repeating Characters
- 数值线性代数徐树方pdf_MIT线性代数4-8:矩阵分解,向量空间,列空间和零空间,线性方程组求解...
- centos卸载nvidia驱动_linux卸载nvidia驱动 如何彻底删除N卡驱动?
- 高中计算机会考操作题网页制作,高中信息技术会考网页制作操作知识点Word
- oppo r11s鸿蒙固件,OPPO R11s官方固件rom刷机包_OPPO R11s系统升级更新包下载
- win7旗舰版系统下usb外接无线网卡安装教程
- 服务器cpu一直处于100%解决思路
- 24岁女孩与30多岁成熟有家男人的午夜对白
- 漫画:什么是蓝绿部署?
热门文章
- Labview之子面板的使用
- 聚合支付、单商户多商户支付、微信/支付宝/PayPal支付流程、支付政策法规
- 如何打造高效的团队(四)- 团队效能度量
- 考幼儿园高级园长证需要些什么材料
- MySQL 案例实战--MySQL数据库 存储过程 存储函数
- PHP保存公众号文章图片,如何在电脑上保存微信公众号文章封面图片?
- 卫星跟踪算法c语言,以SoC FPGA为设计平台的北斗卫星信号跟踪算法的设计
- 使用poi实现excel的上传下载
- CDC工具之Debezium
- Python+Vue计算机毕业设计古诗词鉴赏与交流平台04ps3(源码+程序+LW+部署)