• 自动安装并配置ODBC的思路与实现(自动创建MysqlDSN )


    一、如何自动注册ODBC数据源

    其实都是用到一个函数:SQLConfigDataSource。

    这里举两个有代表性的例子:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // 自动注册FoxPro数据源
    BOOL bOBDC = SQLConfigDataSource(
                NULL,
                ODBC_ADD_DSN,
                "Microsoft Visual FoxPro Driver",
                "DSN = sk"
                "SourceDB=d:\"
                "SourceType=DBF"
    );
    if (!bOBDC)
    {
        AfxMessageBox("FoxPro数据源创建失败!");
    }

    SQLConfigDataSource总共有四个参数,第一个一般都是NULL,第二个的参数代表你要进行的操作,可选参数如下:

    ODBC_ADD_DSN: 增加_个新数据源

    ODBC_CONHG_DSN: 配置(修改)一个已经存在的数据源

    ODBC_REMOVE_DSN: 删除一个已经存在的数据源

    ODBC_ADD_SYS_DSN: 增加一个新的系统数据源

    ODBC_CONFIG_SYS_DSN: 更改一个已经存在的系统数据源

    ODBC_REMOVE_SYS_DSN: 删除一个已经存在的系统数据源

    第三个参数为数据源驱动的名称,可以在ODBC数据管理器中查看(或者注册表)。第四个参数需要注意,DSN、SourceDB、SourceType都是在注册表中查到的。怎么查呢?

    你可以手动配置一个数据源,然后在regedit里面HKEY_CURRENT_USER –> Software –> ODBC –> ODBC.INI中查找刚才手动配置的数据源,点击后右侧出现的就是可以配置的信息项了。例如我的是这样的:

    image

    还有一个需要注意的就是各项之间无逗号,每项皆在引号里,最后记住加.(朗朗上口吧)

    2、MySQL数据源(这个实在是特殊)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    BOOL CLoggingDecodeDlg::ODBCConfig()
    {
        // 自动注册MySQL ODBC数据源
        return SQLConfigDataSource(
                    NULL,
                    ODBC_ADD_DSN,
                    "MySQL ODBC 5.1 Driver",
                    "DSN=test;"
                    "DATABASE=test;"
                    "SERVER=localhost;"
                    "PORT=3306;"
                    "USER=root;"
                    "PASSWORD=1234;"
        );
    }

    可以观察到,MySQL与之前微软系列最大的区别在于第四个参数的写法。注意,结尾必须是分号,否则一定会失效。(这个参考的是MySQL官方文档的写法)

    很多网上的朋友在各大论坛里提问说,为何用微软派的写法写MySQL的自动注册数据源不好使,原因就在这里。它们是有点区别滴。再啰嗦一句,上面第四个参数的那些项名称同理与微软派,也是在注册表中对应出来的。

    二、自动安装ODBC驱动的思路

    其实ODBC驱动的核心在于四个dll文件:

    image

    然后在于注册表中的注册信息:

    image

    上图里可以看到其注册信息所在的路径,该路径下其实只填写了两个地方,一个是ODBC Drivers里面,一个是MySQL ODBC 5.1 Driver里面。主要是后者,如下图:

    image

    填入这三个字段即可。

    但我们无需编写代码去往注册表中写(当然这也可以实现),有一个exe会帮助我们,在正常安装完成ODBC驱动的时候(这里以MySQL为例),安装路径下会有上述的四个dll文件,还会有一个myodbc-installer.exe,这个可以帮助我们完成注册表的写入操作。

    首先,将四个dll文件copy至system32文件夹下。

    然后,cmd命令(win7请用右键管理员权限)进入myodbc-installer.exe所在文件夹。

    最后,敲入命令:

    1
    myodbc-installer.exe -d -a -n "MySQL ODBC 5.1 Driver" -t "DRIVER=myodbc5.dll;SETUP=myodbc5S.dll"

    如果显示Success: Usage count is 1,表示安装成功。

    接下来要实现自动安装,就是用程序来调用以上三个步骤了。

  • 相关阅读:
    kyeremal-bzoj2038-[2009国家集训队]-小z的袜子(hose)-莫队算法
    移位操作之旋转移位
    leetcode 二分查找 Search in Rotated Sorted Array
    背包算法练习--求小于某数字的数组最大和:
    Splunk 会议回想: 大数据的关键是机器学习
    CSDN个人空间、问答频道停站维护公告
    HDFS主要节点解说(一)节点功能
    24点
    【Nginx】事件驱动框架和异步处理
    OC中字符串的提取与替换-四种不同方法实现
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13318470.html
Copyright © 2020-2023  润新知