技术宅的结界

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

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 70|回复: 0
收起左侧

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

[复制链接]

47

主题

63

帖子

570

积分

用户组: 大·技术宅

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

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

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

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

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

执行SQL
[Visual Basic] 纯文本查看 复制代码
SQLiteExec db,"SQL语句"   '文字编码是 Utf8,而SQLiteExec会自动转换,不需要我们转换

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

整理数据库,也称压缩数据库
[AppleScript] 纯文本查看 复制代码
SQLiteExec(hDB,"VACUUM")

事务(Transaction) 批量处理SQL语句,如果大量操作数据库,会很慢的,必须用这个
[AppleScript] 纯文本查看 复制代码
      SQLiteExec(hDB, "BEGIN TRANSACTION")   ' 开始一个事务
      SQLiteExec( .....SQL)
      ....... 大量SQL
      SQLiteExec(hDB, "COMMIT TRANSACTION")  ' 执行事务
      SQLiteExec(hDB, "END TRANSACTION")     ' 结束事务

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|技术宅的结界 ( 滇ICP备16008837号|网站地图

GMT+8, 2018-5-25 18:30 , Processed in 0.084913 second(s), 17 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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