找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 1714|回复: 1

【VFB】数据库(VFB教程3-4)

[复制链接]

51

主题

31

回帖

648

积分

用户组: 大·技术宅

UID
3260
精华
7
威望
12 点
宅币
506 个
贡献
1 次
宅之契约
0 份
在线时间
23 小时
注册时间
2017-12-26
发表于 2018-2-26 23:09:11 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
此处为VisualFreeBasic编程教程(从零开始学或VB进阶)的子章节部分,全部目录点链接。
如果,你只是保存少量数据,如软件的配置,设置等等,可以考虑用 INI
1518921908474128.jpg
使用也很简单,基本上就读和写。
  1. 读取
  2. aa=INI_GetKey("文件名.INI","组名称","字段","默认值")  默认值是当这字段不存在时,返回给 aa 的值
  3. 写入
  4. INI_SetKey("文件名.INI","组名称","字段","数据值")   写数据,如果"数据值"为空,将会删除此字段
复制代码
如果,文件不存在,将会自动创建
其它函数是,整组读取,整组删除,很简单,要用到时看下函数参数。
假如有大量数据,那就要用到数据库引擎了。
微软有 ACC数据库,用ADO数据库引擎操作,来到了VFB,当然要用比它好用,且0配置的,不需要其它支持的SQLite数据库了。
除非很念旧,很固执,必须用ACC,不然,我们必须用非常好的SQLite数据库。原来的ACC数据库,可以用SQLite管理软件来转换
1518923480520374.jpg
想要用数据库,必须要有个非常好用,操作简单的数据库管理软件,Navicat 是业内世界上数一数二的管理软件,外国的且是收费的,在天朝,大家懂的,随便用。
想要用好数据库,必须得学习 SQL 语法,这是数据库语言,不管你是写网页,写电脑软件,写手机软件,这 SQL是通用的,

我们不需要深入学习SQL,但是基础是必须的,需要购买本SQL的书,好好学习。
关于SQL学习和管理器软件使用,本文不提了,只说与VFB相关的。
打开数据库
  1. Dim db As SQLite3 Ptr 'DB 为后面使用数据用
  2. SQLiteOpen db,"数据库文件","密码,无密码此参数省略"
复制代码
关闭数据库
  1. SQLiteClose db
复制代码

执行SQL
  1. SQLiteExec db,"SQL语句"   '文字编码是 Utf8,而SQLiteExec会自动转换,不需要我们转换
复制代码

查询数据
  1. Dim sql As String ,rs() As String
  2. sql="SELECT * FROM 表名 WHERE 条件  LIMIT 获取行数"  '文字编码是 Utf8,而SQLiteSelect会自动转换,不需要我们转换
  3. SQLiteSelect( hDB,Sql,rs())
复制代码
查询来的 RS() 是二维数组 第0列是字段名
  1. For i=0 To UBound(rs,1)
  2.     Print Utf8toStr(rs(0,i)) '显示字段名称  文字都是Utf8格式的,有中文,必须用Utf8toStr转换
  3. Next
复制代码
显示全部数据,注意,数据从 1 开始,0行是字段名称
  1. For y=1 To UBound(rs,1)
  2.     For x=0 To UBound(rs,2)
  3.         Print rs(y,x) & " , " ;
  4.     Next
  5.     Print
  6. Next
复制代码
插入数据例题
  1. SQLiteExec(hDB,"INSERT INTO test(id,name,sex) VALUES('1','Tom','M')")
  2.                              表      字段名              值
复制代码
更新数据
  1. SQLiteExec(hDB,"UPDATE test SET sex='M' WHERE name='Jerry'")
  2.                          表        条件          更新内容
复制代码
删除数据
  1. SQLiteExec(hDB,"DELETE FROM test WHERE name='Jerry'")
  2.                               表          条件
  3. SQLiteExec(hDB,"DELETE FROM test WHERE id IN('003','005'")
  4.                              表                 条件
复制代码
受影响的记录数,我们可以使用sqlite3_change(sqlite3 *)的API来统计上一次操作受影响的记录数。
  1. print  sqlite3_changes(hDB)
复制代码

整理数据库,也称压缩数据库
  1. SQLiteExec(hDB,"VACUUM")
复制代码

事务(Transaction) 批量处理SQL语句,如果大量操作数据库,会很慢的,必须用这个
  1.       SQLiteExec(hDB, "BEGIN TRANSACTION")   ' 开始一个事务
  2.       SQLiteExec( .....SQL)
  3.       ....... 大量SQL
  4.       SQLiteExec(hDB, "COMMIT TRANSACTION")  ' 执行事务
  5.       SQLiteExec(hDB, "END TRANSACTION")     ' 结束事务
复制代码

注意:以上sqlite代码,生成的EXE,将包含数据库引擎,所以,你的EXE将会增加700KB左右,好处是,没必要带个 sqlite3.DLL 文件了。
坏处是 EXE文件变大,不过,谁在乎这么点大的EXE呢。
因此,VFB生成的EXE纯绿色,单文件。
使用ADO数据库
在 WinFBX 里,有个 ADO数据库 章节,自己看帮助,自己研究下,本人没搞过,目前不知道。

回复

使用道具 举报

1

主题

157

回帖

603

积分

用户组: 大·技术宅

UID
7535
精华
0
威望
0 点
宅币
445 个
贡献
0 次
宅之契约
0 份
在线时间
67 小时
注册时间
2021-10-16
发表于 2022-5-17 10:34:20 | 显示全部楼层

此贴必火,占位刘留名~~~~
回复 赞! 靠!

使用道具 举报

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-3-29 02:54 , Processed in 0.039246 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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