Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从何处开始编写自定义ODBC?_C++_Database_Odbc_Powerbi - Fatal编程技术网

C++ 从何处开始编写自定义ODBC?

C++ 从何处开始编写自定义ODBC?,c++,database,odbc,powerbi,C++,Database,Odbc,Powerbi,简而言之,这一切都是全新的,所以我甚至不确定这是否可行,无论如何,我需要能够编写代码,这些代码将位于power bi和数据库等程序之间。例如,Power bi应该能够使用我的自定义驱动程序连接到任何数据库,当我从数据库请求数据时,我需要在Power bi接收数据之前屏蔽所有数据。到目前为止,我得到的唯一指南是寻找自定义ODBC以及如何实现它。我甚至不知道这些是怎么工作的。 我的理解是,我需要做一些C++库,实现一些ODBC函数,API,然后我需要通过注册表登记这个DLL和BI应该能看到我的驱动程

简而言之,这一切都是全新的,所以我甚至不确定这是否可行,无论如何,我需要能够编写代码,这些代码将位于power bi和数据库等程序之间。例如,Power bi应该能够使用我的自定义驱动程序连接到任何数据库,当我从数据库请求数据时,我需要在Power bi接收数据之前屏蔽所有数据。到目前为止,我得到的唯一指南是寻找自定义ODBC以及如何实现它。我甚至不知道这些是怎么工作的。 我的理解是,我需要做一些C++库,实现一些ODBC函数,API,然后我需要通过注册表登记这个DLL和BI应该能看到我的驱动程序。p> 我的问题是我应该如何开始这样做,是否有一些示例代码,只做最简单的事情,这样我就可以看到我应该如何做的概念

编辑:

我取得了一些进展,现在我有了具体的问题。 我在Windows上制作了数据源(DSN),与PASGRESS驱动程序连接,现在我尝试通过C++代码连接到DSN。 但我在这方面遇到了麻烦

这是我的密码

enter code here
HENV hEnv = NULL; // for allocating memory usingSQLAllocEnv
HDBC hDBC = NULL; // connection handler
HSTMT hStmt = NULL; // statement handler
const char* szDSN = "PostgreSQL30"; // DataSourceName (config in windows 
control panel)
const char* szUID = "postgres"; //username of the database
const char* szPasswd = "postgres"; //password of the database

RETCODE retcode;
int rcod = 1;
int i, j, no = 2;



int main()
{
    retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv);

    std::cout << retcode << std::endl;

    SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);

    retcode = SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hDBC);

    std::cout << retcode << std::endl;

    retcode = SQLConnectA(hDBC,(SQLCHAR*)szDSN, SQL_NTS, (SQLCHAR*)szUID, SQL_NTS, (SQLCHAR*)szPasswd, SQL_NTS);


    std::cout << (SQLCHAR*)szUID << std::endl;


    if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
    {
        // connected!!
        std::cout << "Hello World!\n SUCCESSS COME ON PLEASE";
    }
    else {
        std::cout << retcode << std::endl;
    }


    SQLFreeHandle(SQL_HANDLE_ENV, &hEnv);
    SQLFreeHandle(SQL_HANDLE_DBC, &hDBC);


}
在此处输入代码
HENV-HENV=NULL;//用于使用SQLAllocenv分配内存
HDBC HDBC=NULL;//连接处理程序
HSTMT HSTMT=NULL;//当一个执行语句句柄
const char*szDSN=“PostgreSQL30”//数据源名称(windows中的配置)
(控制面板)
const char*szUID=“postgres”//数据库的用户名
const char*szPasswd=“postgres”//数据库的密码
RETCODE-RETCODE;
int rcod=1;
int i,j,no=2;
int main()
{
retcode=SQLAllocHandle(SQL\u HANDLE\u ENV、SQL\u NULL\u HANDLE和hEnv);

std::cout如果您要求提供指向书籍、软件库或其他用于学习如何执行此操作的非现场资源的指针,不幸的是,对于stackoverflow来说,这将是一个离题。开发和ODBC驱动程序:Power BI的自定义连接器-如果您要求提供指向书籍、软件库或其他您需要的非现场资源的指针用于学习如何执行此操作,不幸的是,这与stackoverflow无关。开发和ODBC驱动程序:Power BI的自定义连接器-