注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

鑫淼梦园的博客

圆你的梦想 从这里开始

 
 
 

日志

 
 

一个纯Delphi代码封装的SQLite简单实现  

2012-11-24 15:39:07|  分类: delphi xe3 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
http://www.itwriting.com/sqlitesimple.php

感谢以上的作者,我在这里提供的只是对上面二个进行了一些修改和整合,实现了纯Delphi代码连结Sqlite数据库,并支持数据库的加密和解决,所有修改的地方已经在Delphi源程序中的进行标注,附件中的源码是基于D2009版的,如果你用的是其它版本的Delphi,只需要在工程中加入 SQLite3.pas 和 SQLiteTable3.pas(这二个文件就是纯Delphi代码封装的SQLite实现),而SQLite3.dll是实现了加密解密重新编译过的,所以这三个文件要同时加入工程(sqlite3.dll只需要放到工程目录下即可)。

下面简单介绍一下这个工具的使用方法:

uses SQLiteTable3;

(1)创建数据库


var
  sql:string;
  db:TSQLiteDatabase;

try
  if FileExists('test.db') then DeleteFile('test.db');
  //连接数据库,如果数据库文件不存在会自动创建
  db:=TSQLiteDatabase.Create('test.db','dbpassword');//使用密码创建数据库
  //db:=TSQLiteDatabase.Create('test.db',Nil);//无密码创建数据库
  //创建USER表
  sql:='CREATE TABLE USER(ID integer PRIMARY KEY AUTOINCREMENT NOT NULL,NAME VARCHAR(50),HOMEPAGE VARCHAR(255))';
  db.ExecSQL(sql);
  //插入一条测试数据
  sql:='INSERT INTO USER VALUES(NULL,"ekinglong","http://www.blogjava.net/ekinglong")';
  db.ExecSQL(sql);
finally
  db.Free;
end;


(2)查询数据


var
  sql:string;
  db:TSQLiteDatabase;
  tbl:TSQLiteTable;
  name:string;
  homepage:string;
begin
try
  db:=TSQLiteDatabase.Create('test.db','dbpassword');
  sql:='SELECT * FROM USER LIMIT 1';
  tbl:=db.GetTable(sql);
  if tbl.RowCount>0 then
  begin
    name:=tbl.FieldAsString(tbl.FieldIndex['NAME']);
    homepage:=tbl.FieldAsString(tbl.FieldIndex['HOMEPAGE']);
    ShowMessage('Name:'+name+#13+'HomePage:'+homepage);
  end;
finally
  tbl.Free;
  db.Free;
end;




//参考学习代码
procedure TmmCAT_SQLiteDB.LoadDB();
var
sl3tbl: TSqliteTable;
sTmp :string;
begin
if fDBsLoaded then
Exit;

fsldb := TSQLiteDatabase.Create(fDBFilePath);
CreateTables;

try
sl3tbl := fsldb.GetTable(‘SELECT * FROM ‘ + cTblCategories);
fNumCatsDefined := sl3tbl.Count;

//tim added to fix leak
sl3tbl.Free;

sl3tbl := fsldb.GetTable(‘SELECT * FROM ‘ + cTblStats + ‘ WHERE SType = “PRIMARY”‘);

fLUPDate := 0;
if sl3tbl.Count = 0 then
Exit;

sl3tbl.MoveFirst;
try
sTmp := sl3tbl.FieldAsString(sl3tbl.FieldIndex['LUPDate']);
fLUPDate := StrToFloat(sTmp);
except
Exit;
end;

finally
sl3tbl.Free;
end;
fDBsLoaded := True;
end;






procedure TfrmWarehouse.FormShow(Sender: TObject);
var
sSQL: String;
begin

DBFile := Trim(ExtractFilePath(application.exename) + ‘Warehouse.db’);
sl3db.Free;
sl3db := TSQLiteDatabase.Create(DBFile);

if not sl3db.TableExists(‘warehouse’) then
begin

sSQL := ‘CREATE TABLE warehouse (ID INTEGER PRIMARY KEY,varCode BLOB,’;
sSQL := sSQL + ‘varCategory BLOB,’;
sSQL := sSQL + ‘varTrademark BLOB,’;
sSQL := sSQL + ‘varDescription BLOB,’;
sSQL := sSQL + ‘varPrice BLOB,’;
sSQL := sSQL + ‘varLocation BLOB,Picture BLOB COLLATE NOCASE,Ext TEXT)’;

sl3db.execsql(sSQL);

end else
begin
sl3tb.Free;
sl3tb := sl3db.GetTable(‘SELECT * FROM warehouse’);
sl3tb.MoveFirst;
if sl3tb.Count > 0 then
DisplayRecord;
end;

end;
  评论这张
 
阅读(581)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017