delphi读取sqlite3数据库并用TListView展示

工作中遇到了用delphi查询sqlite数据库并将查询结果在listview展示的问题,而sqlite并不原生支持delphi,在网上查资料,看到有两篇文章都是引用以下一位delphi牛人对sqlite的封装,附上链接:https://www.itwriting.com/blog/articles/a-simple-delphi-wrapper-for-sqlite-3 我觉得作者这个简洁明了,有demo,能满足自己的需求。

作者也提到是用了很多别人封装的东西之后发现有bug,而且也没有把查询结果绑定到TDataSet的需求,所以干脆自己做了一份。我就直接在demo的基础上拿来用了。以下是查询sqlite并展示在listview上的代码。

procedure TForm1.btnReadClick(Sender: TObject);
var
  slDBpath: string;
  sldb: TSQLiteDatabase;
  sltb: TSQLIteTable;
  i: Integer;
begin
  lv.Items.Clear; //lv为TListView控件,列标题可以提前在控件中编辑好
  slDBpath := ExtractFilepath(application.exename) + 'db1.db3'; //数据库文件在程序根目录
  sldb := TSQLiteDatabase.Create(slDBpath);
  try
    sltb := sldb.GetTable('SELECT * FROM log');
    try
      if sltb.Count > 0 then
      begin
        for i := 0 to sltb.Count - 1 do
        begin
          with lv.Items.Add do //新建一行,然后给每行的各个列赋值
          begin
            Caption := sltb.FieldByName['id'];
            SubItems.add(sltb.FieldByName['billid']);
            SubItems.add(sltb.FieldByName['cardid']);
            SubItems.add(UTF8Decode(sltb.FieldByName['name']));
            SubItems.add(sltb.FieldByName['amount']);
            SubItems.add(sltb.FieldByName['result']);
            SubItems.add(sltb.FieldByName['orderid']);
            SubItems.add(sltb.FieldByName['remark']);
            SubItems.add(sltb.FieldByName['curdate']);
            SubItems.add(sltb.FieldByName['resdate']);
          end;
          sltb.next; //继续下一行
        end;
      end;
    finally
      sltb.Free;
    end;
  finally
    sldb.Free;
  end;

end;

TListView因为之前也没用过,踩了一个坑,有个属性ViewStyle默认是vsIcon,这个时候SubItems赋的值是不显示的,选成vsReport就可以了,因为这个问题查了一下午,我一度以为是ide的bug。

以上操作需要使用到SQLite3.pas、SQLiteTable3.pas两个pas文件和sqlite3.dll三个文件,在作者的demo里有,可以自行下载。也可以在资源链接下载。数据库文件可直接放在程序根目录,方便测试。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

角落工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值