狂自私

导航

C++使用SQL Server 一:(编程方式)配置 ODBC 数据源

以编程方式配置 ODBC 数据源

官方有讲解的:数据源:以编程方式配置 ODBC 数据源 | Microsoft Docs

但是有些东西还是不太懂

 

经过测试,如下代码可以正常使用

#include <windows.h>
#include <odbcinst.h>   //windows.h必须位于odbcinst头文件前面,且需要在项目中添加legacy_stdio_definitions.lib
#include <iostream>
int main() {
    /*
    hwndParent:指定为 ODBC 驱动程序管理器或特定 ODBC 驱动程序创建的任何对话框的所有者的窗口,以便从用户处获取有关新数据源的其他信息。 如果 lpszAttributes 参数不提供足够的信息,则会显示一个对话框。 hwndParent 参数可能为 NULL
    fRequest:
        ODBC_ADD_DSN: 增加一个新的用户数据源
        ODBC_CONHG_DSN: 配置(修改)一个已经存在的数据源
        ODBC_REMOVE_DSN: 删除一个已经存在的数据源
        ODBC_ADD_SYS_DSN: 增加一个新的系统数据源
        ODBC_CONFIG_SYS_DSN: 更改一个已经存在的系统数据源
        ODBC_REMOVE_SYS_DSN: 删除一个已经存在的系统数据源
    lpszDriver:是数据库引擎名称,也就是驱动程序名称;在ODBC管理程序里面可以看到
    lpszAttributes:格式为“keyname=value”的属性列表。 这些字符串由 null 终止符分隔,列表末尾有两个连续 null 终止符。 这些属性主要是默认的特定于驱动程序的条目,这些条目进入新数据源的注册表中。 
    */

    if (SQLConfigDataSource(nullptr, ODBC_ADD_DSN, L"SQL Server",
        //相关字段名以及填写要求可以参考:https://docs.microsoft.com/en-us/sql/relational-databases/native-client/applications/using-connection-string-keywords-with-sql-server-native-client?view=sql-server-ver16
        L"DSN=my_sqlServe\0"
        L"Database=master\0"
        L"Server=127.0.0.1\0"
        L"Description=TEST\0"
        L"Trusted_Connection=no\0"      //yes:Windows 身份验证模式进行登录验证;no:使用 SQL Server 用户名和密码进行登录验证,必须指定 UID 和 PWD 关键字
        //L"UID=sa\0"                   //测试了,也不能指定UID
        //L"PWD=Lovedan@971220\0"       //测试证明,不能指定PWD,亦或者还有其他条件,但是我没有找到。
    )) {
        std::cout << "成功!" << std::endl;
        //SQLConfigDataSource函数是可以多次调用的,不会因为DSN已存在就报错的。
    }
    else {
        std::cout << "失败!" << std::endl;
    }


}

 

 

 

 

 

以图形界面方式配置数据源

控制面板\系统和安全\管理工具

 

 

 

 

 

 

 

posted on 2022-05-30 16:37  狂自私  阅读(676)  评论(0编辑  收藏  举报