Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 5253|回复: 3

有没有人有SQLDB的完整事例。

[复制链接]

该用户从未签到

发表于 2009-7-1 09:59:25 | 显示全部楼层 |阅读模式
其中要包括,增加、删除、修改、保存,等操作。
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2009-7-1 14:36:54 | 显示全部楼层
SQLite3Connection1.DatabaseName:=path;
      SQLite3Connection1.Open;
      SQLQuery1.Close;
      SQLQuery1.SQL.Clear;
      SQLQuery1.SQL.Add('insert into YK_TYPK(YPXH,YPMC,YPGG,YPDW)');
      SQLQuery1.SQL.Add('values(2,''test'',''5ml'',''支'')');
      SQLQuery1.ExecSQL;

看看是不是这样就可以新增一条记录了,但我试了几次数据库中都没添加成功,也没出错提示,请问为什么?是不是跟SQLTransaction这个控件有关?
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2009-7-2 23:27:32 | 显示全部楼层
为了提高效率,Sqlite4fpc会把数据缓存在内存中,所以必须手工对Dataset进行ApplyUpdates。如果使用query,可使用SQLTransaction来控制事务的开始和提交。下面是我写的测试代码,供参考:

procedure TForm1.Button1Click(Sender: TObject);
var
  strs:TStringList;
begin
  SQLite3Connection1.Connected:= true;
  strs := TStringList.Create;
  try
    SQLite3Connection1.GetTableNames(strs,false);
    if strs.Count=0 then
    begin
      SQLite3Connection1.ExecuteDirect('CREATE TABLE test(ID INTEGER PRIMARY KEY autoincrement, F1 VARCHAR(100), F2 INTEGER, F3 VARCHAR(100));');
    end;
  finally
    strs.Free;
  end;
  qry.Close;
  qry.SQL.Clear;
  SQLTransaction1.StartTransaction;
  qry.SQL.Add('insert into test(F1,F2,F3) values '+format('("%s",%d,"%s");',['test1',1,'testtest1']));
  qry.ExecSQL;
  SQLTransaction1.Commit;
end;
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2009-7-7 21:19:02 | 显示全部楼层
SQLTransaction1.StartTransaction;
  qry.append;
  qry.fieldbyname('F1').value:='1';
  qry.fieldbyname('F2').value:='test';
  qry.post;
  SQLTransaction1.Commit;

这样可以吗?
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2025-5-2 20:46 , Processed in 0.027844 second(s), 10 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表