VisualFreeBasic控件_MySqlBox 网络大型数据库

2026-1-21 / 0 评论 / 114 阅读


MySQL 是一种流行的开源关系型数据库管理系统(RDBMS),它使用结构化查询语言(SQL)来管理或操作数据库。MySQL 由瑞典公司 MySQL AB 开发,并在 2008 年被 Sun Microsystems 收购,随后 Sun Microsystems 又被 Oracle Corporation 收购。尽管 MySQL 的所有权发生了变化,但它仍然保持其开源和免费的特性,是许多网站和应用程序背后的首选数据库系统。

MySQL 的特点

  1. 开源和免费:MySQL 是开源的,这意味着其源代码是公开的,任何人都可以查看、修改和分发它。此外,对于大多数用途,MySQL 是免费的,降低了开发成本。
  2. 高性能:MySQL 经过了优化,以提供快速的数据访问速度,支持高并发访问,适用于大型和复杂的数据库应用。
  3. 可靠性:MySQL 提供了多种机制来确保数据的完整性和可靠性,包括事务处理、行级锁定和外键约束等。
  4. 灵活性:MySQL 支持多种存储引擎,如 InnoDB、MyISAM、Memory 等,每种引擎都有其特定的用途和性能特点,用户可以根据需要选择合适的存储引擎。
  5. 安全性:MySQL 提供了强大的安全特性,如用户认证、访问控制、数据加密等,以保护数据免受未授权访问。
  6. 易于使用:MySQL 提供了简单的 SQL 语言接口,使得数据库的管理和操作变得容易。此外,它还提供了丰富的文档和社区支持,帮助用户解决问题。
  7. 跨平台:MySQL 可以在多种操作系统上运行,包括 Windows、Linux、macOS 等,提供了良好的跨平台兼容性。

MySQL 的应用

MySQL 被广泛应用于各种类型的应用程序中,包括网站、博客、电子商务网站、内容管理系统(CMS)、企业资源规划(ERP)系统、客户关系管理(CRM)系统等。由于其开源和免费的特性,MySQL 特别受到小型企业和个人开发者的青睐。

外带一个DLL文件

数据库分为服务器版和客户机版,本控件属于客户机版。使用前,你必须安装一个服务器版软件,部署一个 mysql 数据库(网上到处都有,这里不再说明),或者你已经在网上购买的了一个网络数据库
本控件只带一个DLL文件,编译软件后,在软件文件夹下有一个 mysql 的DLL,你发布软件需要带着这个DLL,可以可以随时更新到最新版DLL

打开mysql 数据库

当你创建了一个MySql数据库,就拥有了账号密码、IP或域名等,填入相关参数即可
MySql默认端口是3306,由于是网络数据库,为了安全(主要是为了那些扫端口爆破软件)可以修改端口,只有你自己知道的端口。

if MySqlBox1.Open(服务器IP或域名,用户名,密码,数据库名,端口) =0  Then Print "打开失败" 

使用完成后,需要关闭数据库

MySqlBox1.Close 

查询数据库

注意1:查询代码分W字符版和UTF8字符版,可以根据自己的需要使用,例题说明不提及UTF8字符版
注意2:返回的字符文字全部是 UTF8字符格式,使用时需要转换字符编码
查询相关参数说明

  • Table 表名
    如果特殊字符,比方包含空隔、关键词、中文等,可以用反引号 `  包裹字段名 不然会报错
    MySqlBox1.Find("表名".....普通表名
    MySqlBox1.Find("`表名`".....特殊表名
    MySqlBox1.Find("表名1,表名1".....多表联合查询
  • Cond 条件
    如ID>0 等等,就是字段名>、= 、<、<= 、>= 某值 还有 or and 等,和我们代码的 if 同样道理,无条件将查出全部 还有 id IN(2,10,30) 等列表条件,可以查阅相关的 SQL 条件说明 LIKE '%AA%' 模糊查找,%号表示任意字符,模糊条件不区分大小写。 字符串用单引号( ' ),如同 B语法的双引号,遇到值是单引号( ' ) ,那么和 B语法一样,用连续2个单引号 ( '' ) 表示1个单引号的值。
    MySqlBox1.Find("表名","id>3".... 普通数值查询
    MySqlBox1.Find("表名", "(id>3 And id<10) Or id=10 "....表达式查询,网上搜索SQL命令 ,和 Basic的条件语法很相似
    MySqlBox1.Find("表名","`字段名`='文本'".... 字符查询
    MySqlBox1.Find("表名"," `字段名` LIKE '%文本%'".... 字符模糊查询,%号表示任意字符,模糊条件不区分大小写
    MySqlBox1.Find("表名", " id IN(2,10,30) "....多值查询,等通于:id = 2 Or id = 10 Or id = 30
  • rs() 返回查出的内容
    1:查询多行时是2维数组,rs(行,列) 0行为字段名称:如 rs(0,0 rs(0,1) 数据从 rs(1,x) 开始
    2:查询单行时是1维数组 rs(列)
    3:变量类型是 String ,不表示是 A字符,是原始数据,如果字段是字符,需要转换后使用。 如果字段是数字,用 val() valint() 转换,如果是字符,用 Utf8toStr UTF8toCWSTR 转换
  • Col 字段名称(列名)
    需要查询出什么字段,可以用 字段名1,字段名2,... 查出结果为指定列,将影响 rs() 结果
    MySqlBox1.Find(表名, 条件, rs(), "*"....全部字段
    MySqlBox1.Find(表名, 条件, rs(), "字段名1,字段名2,字段名2"....部分字段,为了节约查询时间,提供查询速度
  • Orderby 查出的数据按那个字段排序
    这里是 字段名称(列名)
    默认升序,倒序:字段名 DESC ,字段名称+空格+DESC ,默认值是ASC 可以多字段排序:字段名1,字段名2,字段名3 等等,也可以加 DESC 倒序,先排序 字段1,字段1里的内容字段2排序......
    
    MySqlBox1.Find(表名, 条件, rs(), "*", "字段名1"....查出结果按[字段名1]从小到大排序
    MySqlBox1.Find(表名, 条件, rs(), "*", "字段名1 DESC"....查出结果按[字段名1]从大到小排序
    MySqlBox1.Find(表名, 条件, rs(), "*", "字段名1,字段名2,字段名3"....先按[字段名1]排序,字段1相同的按[字段名2]排序,以此类推。
* Page    分页查询
  第 Page 页(最小是 1页),每页 Pagesize 行。不设置 Pagesize ,将查出全部内容。
* Pagesize  1页多少条数据      

MySqlBox1.Find(表名, 条件, rs(), 字段, 排序, 1,100) 查询第1页,每页100行

查询的行数太多,建议用分页查询,来保障软件执行效率。
### 查询多行数据

Dim rs() as String
Dim as Long x,y
If MySqlBox1.Find("表名","条件", rs()) Then
Print “行数=” &UBound(rs) & “,列数=” & UBound(rs, 2)
For y = 0 To UBound(rs) ' y = 0 时将显示字段名
dim bb as String
For x = 0 To UBound(rs, 2)
bb &=rs(y, x) & " , " ; '如果是文本,因为是 UTF8 编码,需要转换后输出
Next
Print bb
Next
Else
Print "出错:"
End If


### 查询单行数据
有时候,只需要一行数据,返回全部字段

Dim rs() as String
Dim as Long x,y
If MySqlBox1.FindOne("表名","条件", rs()) Then
dim bb as String
For x = 0 To UBound(rs)
bb &= rs(x) & " , " ;
Next
Else
Print "出错:"
End If

### 查询单字段数据
查询出一行当中的一个字段,假如查询出多个字段,就返回第一个字段,当返回空时,表示查询失败。

uid = ValInt(Form1.MySqlBox1.FindOnly("User" ,"uName='" & 账号 & "'" ,"uID"))

### 统计行数
和查询一样,这只是返回行数,条件参数查看查询里的说明。

行数=MySqlBox1.Count(表名,条件)

### 新增记录(一行)

返回=MySqlBox1.AddItem(表名, 字段赋值列表)

**字段赋值列表**  有字段名和值组成,用英文逗号隔开

返回=MySqlBox1.AddItem(表名, "字段名1=值1,字段名2=值2,字段名3=值3,字段名4=值4")

**如果字段名是特殊字符**,比如SQL命令里的关键词、非法字符等,用双引用或中括号  ”字段名“ 或 [字段名]
**如果”值“是字符串**,用单引用包裹,如:'文字内容'  ,假如文字是单引用,那么用 2个单引号代表1个单引号
**如果数据库表中字段没在赋值列表中**,那么就按数据库表的默认值自动赋值。也就是说,字段有 10个,你只给1个字段赋值,那么其它的就按默认赋值。
**返回:**  当有自增主键(通常是 ID字段)就返回当前新增的ID,当无这样的字段,返回可能是0。当新增失败,返回0.
### 删除记录(多行)

返回行数= MySqlBox1.DeleteItem(表名, 条件)

**条件**:参考查询里的条件说明,就是查询出的所有行,被删除
**返回**:假如失败,返回 -1,成功返回 删除了多少行。
### 更新记录(修改记录)
* 普通更新

返回= MySqlBox1.Update(表名, 条件,更新列表)

**表名:** 参考查询 
**条件:** 参考查询
**更新列表:** 参考新增中的 **字段赋值列表**
**返回:** 假如失败,返回 -1,成功返回 更新了多少行。
### 十二、直接执行SQL

MySqlBox1.SqlFind (sql命令,返回())
MySqlBox1.SqlFindOne(sql命令,返回())


假如命令中有返回,比如查询,就有返回内容,假如命令中无返回,比如更新,这个返回就无效。
**注意:** SQL命令是 UTF8 编码的字符,返回的也是UTF8
### 其它更多功能
除了以上基本功能,本控件还封装了好多实用功能,需要自己来测试研究,这里就不再把所有的功能都介绍一遍,因为都带有简单是中文说明,很容易明白

评论一下?

OωO
取消