Delphi7中不用控件连接sqlite

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 英文企业版 编译通过

时间: 2024-10-10 17:33:45

Delphi7中不用控件连接sqlite的相关文章

Delphi中Undac控件连接MYSQL数据库问题总结

1.数据库挂到cxgrid上,中文显示不正确 我调试了好长时间,怀疑是编码问题,mysql的编码方式我都试过了,都不可以. 解决问题过程: (1).在dos系统下进入mysql数据库输入show variables like 'char%'; 我考虑可能是character_set_connection的编码有问题,于是开始设置它的编码方式,但是,这个编码方式重新启动数据库还是原来的编码方式.当然可以mysql数据库配置文件中设置,但是不是这个原因. (2).考虑到可能是数据库字符集编码方式问题

VC++使用ActiveX控件连接和操作数据库

VS2008运用ActiveX控件连接和操作数据库关闭时一直有个内存释放的错误,好像使用VC6.0会多生成2个文件,就不会有问题. VC++使用ActiveX控件连接和操作数据库的方法分两种: 1.通过属性窗口连接数据库2.通过代码连接数据库 1.通过属性窗口连接数据库基本步骤:(1)创建一个基于对话框的应用程序ActiveXDB; (2)添加CAdodc控件:对话框上右键单击,选择Insert ActiveX control菜单项,弹出的对话框中选择Microsoft ADO Data Con

轻松学习Asp.net中的控件

C/S 结构,即大家熟知的客户机和服务器结构.它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销.目前大多数应用软件系统都是Client/Server形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server 应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件:因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统.

Android中ExpandableListView控件基本使用

本文採用一个Demo来展示Android中ExpandableListView控件的使用,如怎样在组/子ListView中绑定数据源.直接上代码例如以下: 程序结构图: layout文件夹下的 main.xml 文件源代码例如以下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/a

Android中常用控件及属性

在之前的博客为大家带来了很多关于Android和jsp的介绍,本篇将为大家带来,关于Andriod中常用控件及属性的使用方法,目的方便大家遗忘时,及时复习参考.好了废话不多讲,现在开始我们本篇内容的介绍. 1.控制应用显示的方向: setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//竖直显示效果. setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LA

delphi7 自带控件安装对应表

原来的控件delphi7里何处寻? 经常有朋友提这样的问题,“我原来在delphi5或者delphi6中用的很熟的控件到哪里去了?是不是在delphi7中没有了呢?这是不是意味着我以前写的代码全都不能够移植到delphi7中来了呢?是不是我必须学习适应这些新的控件呢?” 现在我就对这一问题进行解释,并对在delphi7中的VCL以及CLX进行一下总结,方便有这方面需求的朋友进行查询 其实,我们在原来版本如D5.D6中使用的控件如Quickrep,FastNet等,在D7中仍然是保留的.只是Del

基于VB中WINSOCK控件的网上象棋系统的实现

本文发表在<微型机与应用>杂志2001年第3期. 马根峰1   ,  孙艳2  , 王平1 (1.重庆邮电学院自动化学院,重庆,400065:2. 铁道部第十九工程局四处,内蒙 通辽,028000 )  摘要     本文首先介绍了Visual Basic中的WINSOCK控件的使用方法,然后深入探讨了网上象棋系统的设计思想及其实现过程. 关键词    WINSOCK控件:TCP:UDP 中图分类号: 文献标识码: 1      引言 MicrosoftVisual Basic 是可视化的.面

C#中WebBrowser控件的使用

今天在YouTube上看了一个关于WebBrowser控件用法的小视频,做一下总结. 首先创建一个WinForm程序,拖入一个textbox控件和一个button按钮,然后拖入一个panel控件,如图所示: 拖入panel控件后,找到WebBrowser控件并双击,WebBrowser控件就会自动填充到panel控件上,像下面这样: 之后给button改个名,双击button按钮设置一个简单的跳转行为: private void goButton_Click(object sender, Eve

设定当前视图中所有控件字体的方法

     本范例实现的是对界面中所有的控件一次性的设置字体样式.思路是找到父控件,然后遍历子控件.如果子控件是可以修改文字的控件,那么就设置文字.这用到了控件的继承,很多控件都是继承与textview的,所以将控件均转为textview,最后设置字体即可. 布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.