数据库(VFB教程3-4)

  勇芳 2018-2-18 2924

此处为VisualFreeBasic编程教程(从零开始学或VB进阶)的子章节部分,全部目录点链接。

如果,你只是保存少量数据,如软件的配置,设置等等,可以考虑用 INI

QQ截图20180218104457.jpg

使用也很简单,基本上就读和写。

读取
aa=INI_GetKey("文件名.INI","组名称","字段","默认值")  默认值是当这字段不存在时,返回给 aa 的值
写入
INI_SetKey("文件名.INI","组名称","字段","数据值")   写数据,如果"数据值"为空,将会删除此字段

如果,文件不存在,将会自动创建

其它函数是,整组读取,整组删除,很简单,要用到时看下函数参数。

假如有大量数据,那就要用到数据库引擎了。

微软有 ACC数据库,用ADO数据库引擎操作,来到了VFB,当然要用比它好用,且0配置的,不需要其它支持的SQLite数据库了。

除非很念旧,很固执,必须用ACC,不然,我们必须用非常好的SQLite数据库。原来的ACC数据库,可以用SQLite管理软件来转换

QQ截图20180218111102.jpg

想要用数据库,必须要有个非常好用,操作简单的数据库管理软件,Navicat 是业内世界上数一数二的管理软件,外国的且是收费的,在天朝,大家懂的,随便用。

想要用好数据库,必须得学习 SQL 语法,这是数据库语言,不管你是写网页,写电脑软件,写手机软件,这 SQL是通用的,

我们不需要深入学习SQL,但是基础是必须的,需要购买本SQL的书,好好学习。

关于SQL学习和管理器软件使用,本文不提了,只说与VFB相关的。

引用文件(推荐放在 FF_AppStart 模块里,或放在当前模块最前面)

QQ截图20180421095924.jpg

#Include Once "sqlite3.bi"

打开数据库

Print StrToWStr("")    '如果你代码中没用到此函数,就需要引用下函数,不然会报错
Print wStrToUtf8("", 0) '如果你代码中没用到此函数,需要引用下函数,不然会报错
Dim db As SQLite3 Ptr 'DB 为后面使用数据用
SQLiteOpen db,"数据库文件","密码,无密码此参数省略"

关闭数据库

SQLiteClose db

执行SQL

SQLiteExec db,"SQL语句"   '文字编码是 Utf8,而SQLiteExec会自动转换,不需要我们转换

查询数据

Dim sql As String ,rs() As String
sql="SELECT * FROM 表名 WHERE 条件  LIMIT 获取行数"  '文字编码是 Utf8,而SQLiteSelect会自动转换,不需要我们转换
SQLiteSelect( DB,Sql,rs())

查询来的 RS() 是二维数组 第0列是字段名

For i=0 To UBound(rs,1)
    Print Utf8toStr(rs(0,i)) '显示字段名称  文字都是Utf8格式的,有中文,必须用Utf8toStr转换
Next

显示全部数据,注意,数据从 1 开始,0行是字段名称

For y=1 To UBound(rs,1)
    For x=0 To UBound(rs,2)
        Print rs(y,x) & " , " ;
    Next
    Print
Next

插入数据例题

SQLiteExec(DB,"INSERT INTO test(id,name,sex) VALUES('1','Tom','M')")
                             表      字段名              值

更新数据

SQLiteExec(DB,"UPDATE test SET sex='M' WHERE name='Jerry'")
                         表        条件          更新内容

删除数据

SQLiteExec(DB,"DELETE FROM test WHERE name='Jerry'")
                              表          条件
SQLiteExec(DB,"DELETE FROM test WHERE id IN('003','005'") 
                             表                 条件

受影响的记录数,我们可以使用sqlite3_change(sqlite3 *)的API来统计上一次操作受影响的记录数。

print  sqlite3_changes(DB)

整理数据库,也称压缩数据库

SQLiteExec(DB,"VACUUM")

事务(Transaction) 批量处理SQL语句,如果大量操作数据库,会很慢的,必须用这个

      SQLiteExec(DB, "BEGIN TRANSACTION")   ' 开始一个事务
      SQLiteExec( .....SQL)
      ....... 大量SQL
      SQLiteExec(DB, "COMMIT TRANSACTION")  ' 执行事务
      SQLiteExec(DB, "END TRANSACTION")     ' 结束事务

注意:以上sqlite代码,生成的EXE,将包含数据库引擎,所以,你的EXE将会增加700KB左右,好处是,没必要带个 sqlite3.DLL 文件了。

坏处是 EXE文件变大,不过,谁在乎这么点大的EXE呢。

因此,VFB生成的EXE纯绿色,单文件。

使用ADO数据库

在 WinFBX 里,有个 ADO数据库 章节,自己看帮助,自己研究下,本人没搞过,目前不知道。

最新回复 (0)
返回
联系勇芳