网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
在Delphi7中不用控件连接sqlite
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式

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

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号