注册 登录
编程论坛 VFP论坛

分享:win7系统下 使用vfp 连接 mysql 数据库

sam_jiang 发布于 2024-02-21 01:01, 1150 次点击
网上搜索了有关mysql和vfp的教程,基本上不尽人意,难以实现vfp连接mysql数据库,没办法,只好自己研究摸索。。。

搞了两天,卸载了再安装,安装了再卸载,总算成功了。

现在把我经历分享给大家,希望有需要的狐友不要再和我一样走弯路了!

首先,去官网下载mysql,我的系统是win7,64位的,最初我下载了最新版的mysql 以及connector ODBC,也是64位的,和操作系统匹配,但是和vfp不匹配,捣鼓了很久,走了很多弯路,原来根本不行。
注意:由于vfp是32位的,所以mysql和connector ODBC必须是32位的,否则会报错,网上搜错误代码,给你什么答案都有。
我下载的是mysql 5.7版,32位最后的版本,以及最新的32位的connector ODBC 8.0。

其次,安装好之后,就是配置mysql服务器了。这里又碰到一个坑,控制面板里的ODBC管理器里没有安装好的connector ODBC 8.0 驱动可以选。又捣鼓了很久,网上也没看到有关这个的介绍,可把我急死了。
我把网上搜索到的安装方法几乎一一试过,没有一个是成功的,吐血!

最后我想到,控制面板里的ODBC管理器可能是64位的,问题就出在这个管理器上,它应该也是32位的才行!,于是去windows的系统文件夹里去找这个ODBC管理器。终于在c:\windows\syswow64 里找到32位的ODBC管理器 odbcad32.exe

在命令行里运行这个管理器,果然找到了安装好的odbc 驱动,于是赶紧配置了mysql,然后打开vfp,尝试连接,果然成功,开心。。。。。。

怕忘记怎么连接mysql数据库,又赶忙写了个连接类connector,却又不知道该添加什么其他功能(万能的网友可以建议一下)。。。
代码如下:
程序代码:

**************************************************
*-- 类:           connector (d:\documents\visual foxpro 项目\myclass.vcx)
*-- 父类:  custom
*-- 基类:    custom
*-- 时间戳:   02/19/24 11:39:14 PM
*
DEFINE CLASS connector AS custom


    Height = 17
    Width = 66
    *-- mysql数据源
    datasource = ""
    *-- mysql用户名
    user = ""
    *-- mysql密码
    password = ""
    *-- -1表示mysql连接失败;大于0成功
    handle = -1
    Name = "connector"


    *-- 连接mysql数据库,成功handle返回非零,失败返回-1
    PROCEDURE connect
        PARAMETERS cdatasourcename,cuser,cpassword
        IF PARAMETERS()=0
            cdatasourcename=this.dataSource
            cuser=this.user
            cpassword=this.password
        ELSE
            this.dataSource=cdatasourcename
            this.user=cuser
            this.password=cpassword
        ENDIF
        this.handle=SQLCONNECT(cdatasourcename,cuser,cpassword)

        RETURN this.handle

    ENDPROC


    *-- 断开mysql连接
    PROCEDURE disconnect
        PARAMETERS nhandle
        IF PARAMETERS()=0
            nhandle=this.handle
        else
            this.handle=nhandle
        ENDIF
        IF nhandle>0
            SQLDISCONNECT(nhandle)
        ENDIF

    ENDPROC


    PROCEDURE Destroy
        this.disconnect()
    ENDPROC


ENDDEFINE
*
*-- EndDefine: connector
**************************************************


17 回复
#2
sych2024-02-21 07:23
谢谢分享,辛苦啦!


#3
星光悠蓝2024-02-21 09:56
谢谢分享!
#4
惬意_甬车2024-02-21 10:26
谢谢分享,辛苦啦!
#5
easyppt2024-02-21 11:22
谢谢分享!
#6
igaoyuan2024-02-21 11:49
学习了,收藏备用
#7
aqyejun2024-02-21 16:42
感谢分享!
#8
schtg2024-02-21 17:15
回复 楼主 sam_jiang
谢谢分享!
#9
wxzd1232024-02-22 08:33
谢谢
#10
bdx8082024-02-23 10:47
谢谢分享,辛苦啦!
#11
ykxby0012024-02-23 17:10
连接是成功了,用CA是否能行?我用的时候展示数据没问题,显示都正常,但回写数据时是乱码,改了ODBC字符集也不行。
#12
sam_jiang2024-02-23 22:53
回复 11楼 ykxby001
看看mysql的字符集是不是GB2312。

#13
z126892024-08-24 16:54
少走很多弯路,谢谢楼主!
#14
ykxby0012024-08-25 10:19
VFP连接mysql,采用CA要改字符集,但是改了之后查询没问题了,但是回写更新就会出乱码!这个我也调了好长时间,最后干脆放弃mysql,还是用mssql了
#15
sam_jiang2024-08-25 15:15
回复 14楼 ykxby001
试试strconv("回写文本",11)
#16
ykxby0012024-08-25 16:35
以下是引用sam_jiang在2024-8-25 15:15:21的发言:

试试strconv("回写文本",11)



就是gb2312,我说的是用CA,你的mysql连接能用ca吗?包括查询和更新?
#17
sam_jiang2024-08-25 18:58
回复 16楼 ykxby001
只要连接了,都可以查询和更新啊,要保持两端的字符集相同,否则就会乱码

CursorAdapter.DataSourceType [= cDataSourceType] &&"ODBC"
CursorAdapter.DataSource [= DataSource] &&连接mysql句柄
CursorAdapter.SelectCmd [ = cCommand ] &&查询语句

[此贴子已经被作者于2024-8-25 19:09编辑过]

#18
tsg20052024-10-26 08:47
给你点个赞
1