VisualFreeBasic:类似VisualBasic6的FreeBasic语言集成开发环境

http://www.yfvb.com/soft-48.htm

原作者vfb连接数据库有sqlite和access例子,我想常用的mysql也链接下试试吧,最后发现链接字符串不对头,那就先找vb6代码联通试试

网上找来代码提示报错 变量未定义

 Dim Conn As New ADODB.connection

根据网上解说,菜单-工程-引用Microsoft ActiveX Data Objects 2.x Library

ado技术发展多年,有很多个版本了,都能用,不过我还是用了比较新的版本6.1的

然后发网上找了mysql的驱动

https://www.cr173.com/soft/50794.html
记得安装32位吧,vb6是太古老的技术,64位估计不顺畅

然后链接字符串还是不对,在vb6工具箱 右键 选部件 ,控件列表里 选择 microsoft ado data control 6.0(sp6)

这个控件的ConnectionString属性就是Conn的ConnectionString

图形界面点击属性,刚开始选了数据源试了成功,后来摸索着直接字符串,也成功了。当然最后连接数据其实不需要这个控件就可以,用这个控件主要就是帮忙生成链接字符串。当年vb6那么风靡就是因为太好用了,各种控件点点就好了,要是纯代码,想破脑袋也不知道连接代码什么写法。

   Dim strCon$                             '不需要设置dsn直接使用
    Dim strCn$                                  '设置dsn用法
    
    strCn = "Provider=MSDASQL.1;Password=root;Persist Security Info=True;User ID=root;Data Source=db1;OPTION=3;"
    strCon = "Provider=MSDASQL.1;Persist Security Info=True;Extended Properties=""Driver=MySQL ODBC 8.0 Unicode Driver;SERVER=192.168.1.100;UID=root;DATABASE=db1;PORT=3306;pwd=root"""
    Dim Conn As New ADODB.connection
    With Conn
        If .State = adStateOpen Then .Close
        .ConnectionString = strCon
        .CommandTimeout = 15
        .Open
    End With
    ' 设置该属性, 使 recordcount 和 absolutepage 属性可用
    Conn.CursorLocation = adUseClient
    If Conn.State = adStateOpen Then
        MsgBox "连接成功", vbOKOnly, "提示"
    Else
        MsgBox "连接失败", vbOKOnly, "提示"
    End If
    Conn.Close

知道了vb6的写法,搬到vfb里就ok了


#include "Afx/CADODB/CADODB.inc"
 '// 打开连接
   Dim pConnection As CAdoConnection Ptr = NEW CAdoConnection
   ' 如果配置dsn Provider=MSDASQL.1;Password=root;Persist Security Info=True;User ID=root;Data Source=dsly;OPTION=3;
   pConnection->ConnectionString = "Provider=MSDASQL.1;Persist Security Info=True;Extended Properties=""Driver=MySQL ODBC 8.0 Unicode Driver;SERVER=192.168.1.100;UID=root;DATABASE=db1;PORT=3306;pwd=root"""
     PRINT pConnection->ConnectionString
   pConnection->Open
   'pConnection->Open "Provider=Microsoft.Jet.OLEDB.4.0;Password=root;User ID=root;Data Source=service.mdb;"
      
   '// 打开记录集
   Dim pRecordset As CAdoRecordset
   '// 将光标位置设置到客户端对于获取断开的记录集非常重要
   pRecordset.CursorLocation = adUseClient
   
   PRINT   pRecordset.State
   
   '// 打开记录集
   Dim cvSource As CVAR = "SELECT * FROM i_user"
   pRecordset.Open(cvSource, pConnection, adOpenKeyset, adLockOptimistic, adCmdText)
   
   '// 通过将其活动连接设置为空来断开记录集。
   '// 投射到Afx_ADOConnection PTR需要获得正确的重载方法;
   '// 否则,CVAR版本将被调用并且会失败。
   pRecordset.ActiveConnection = Cast(Afx_ADOConnection Ptr, Null)
   
   '// 关闭并释放连接
   Delete pConnection
   
   list1.Clear()
   '// 解析记录集
   Do
      '// 测在不在记录集的末尾...                                                                                       
      If pRecordset.EOF Then Exit Do
      '// 获取“用户名”列的内容
      dim ss as String = pRecordset.Collect("user_name")
        PRINT ss
      list1.AddItem(ss)
      '// 取下一行
      If pRecordset.MoveNext <> S_OK Then Exit Do
   Loop

 

更多推荐