Lazarus中文社区

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

QQ登录

只需一步,快速开始

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

Laz+WinXP 下sqlite3 不能将新记录写回数据库

[复制链接]

该用户从未签到

发表于 2010-6-3 09:22:08 | 显示全部楼层 |阅读模式
俺看到有人提过WINCE下有这个问题,怎么俺在XP下也是这个问题,而且试了N次,不同的方法都不能解决.SQLITE3的具体连接同坛子里的这个,因为权限不够,没法加链接,所以COPY 过来:
lazarus 连接sqlite3具体方法
[blockquote]管理提醒: 本帖被 猫工 执行加亮操作(2009-11-30) [/blockquote]需要的组件,TSQLite3Connection,TSQLTransaction,TQuery
       按照delphi 下一样的操作,从面板里拖下以上几个组件,然后将TSQLite3Connection的Database设置为SQLite的数据文件位置,如D:\ss.db,注意Connected属性不能设置为True,否则就提示:不能载入SQLite3.dll 文件,将TSQLite3Connection的Transaction属性,设置为TSQLTransaction组件名字(你刚才自己添加的TSQLTransaction组件名字),其他就和Delphi中使用一样的,使用SQLite数据库,必须设置Transaction对象,可能就这一点和Delphi 中使用不太一样(不设置,运行时会触发错误的,编译可以通过),使用TSQLQuery组件和其他Query组件一样的。补充一点,把SQLite3.dll文件放在你的工程文件目录下。
   希望lazarus在中国健康成长,国内关于lazarus的资料确实不多,但是因为该软件是开源的,而且组件异常丰富,值得我们好好学习和使用。而Delphi永远也不太可能开源。为什么不用lazarus呢?????难道还要用盗版的delphi吗???
   支持开源,支持lazarus。

俺也有上官网上问过,说是要在DBNavigator 的click 事件中加入以下代码:
  1. begin
  2. if button=nbPost then sqlquery1.applyupdate;
  3. end;
复制代码

俺试过也是不行.俺也有试过不用DGNavigator 和DBGrid,就用普通的文本框接受输入,用两件BUTTON 分别实现添加和保存,结果还是保存不了.俺的sqlite3.dll安装及系统设置都没问题.
有知道如何解决的大哥,请回复小弟一下,感谢
回复

使用道具 举报

该用户从未签到

发表于 2010-6-6 10:28:09 | 显示全部楼层
少了数据存盘语句,你這保存是存在了内存.未写入数据库文件,具体是那個语句俺没碰很久都忘了.建议去WIKI查查例子

设置了主键了么?
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2010-6-6 11:57:10 | 显示全部楼层
设置了主键.

官网上也讲了不用DBNavigator的情况下,例如一个BUTTON来保存,用下面两条语句:
  1. SQLQuery.ApplyUpdates;
  2. SQLTransaction.CommitRetaining;
复制代码
但俺试过,运用时异常:db is locked.

FP+LAZ是俺心目中最理想的跨平台开发工具,可俺就在这个地方卡住过不去,郁闷啊
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2010-8-13 09:40:49 | 显示全部楼层
在最新的Daily Snapshot   下,安装上TSQLite3DataSet或者 Zeos这两个组件都可正常操作sqlite3了,不过在俺的系统上【TSQLite3Connection,TSQLTransaction,TSQLQuery】还是不能正常工作。不管怎样,现在总有了解决方案了。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2010-8-13 10:09:31 | 显示全部楼层
恭喜恭喜
谢谢提供方法
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2010-8-13 21:45:30 | 显示全部楼层
用SQL语句
INSERT ...................绝对没问题
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2010-8-27 22:39:33 | 显示全部楼层
procedure TForm1.Button1Click(Sender: TObject);
begin


  //OPEN 中編輯的語法
  if not SQLTransaction1.Active then
  SQLTransaction1.StartTransaction;

  SQLQuery1.Append();
  SQLQuery1.FieldByName('uid').AsInteger:=1;
  SQLQuery1.FieldByName('uname').AsString:='中文測試';
  SQLQuery1.Post;

  SQLQuery1.Append();
  SQLQuery1.FieldByName('uid').AsInteger:=2;
  SQLQuery1.FieldByName('uname').AsString:='中文測試二';
  SQLQuery1.Post;

  SQLQuery1.ApplyUpdates;
  SQLTransaction1.CommitRetaining;


end;
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

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

GMT+8, 2025-1-21 16:14 , Processed in 0.047195 second(s), 10 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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