1.ODBC连接Postgresql

2023-05-16

SQLDriverConnect

SQLDriverConnect 是 SQLConnect 的替代方法。 它支持需要比 SQLConnect 中的三个参数更多的连接信息的数据源、对话框来提示用户输入所有连接信息,以及系统信息中未定义的数据源。

方法1:通过对话框输入所有连接信息:
#include <windows.h>  
#include <sqlext.h>  
#include <iostream>

int main() {
    SQLHENV henv;
    SQLHDBC hdbc;
    SQLHSTMT hstmt;
    SQLRETURN retcode;

    SQLCHAR OutConnStr[255];
    SQLSMALLINT OutConnStrLen;

    HWND desktopHandle = GetDesktopWindow();   // desktop's window handle  

    // Allocate environment handle  
    retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);

    // Set the ODBC version environment attribute  
    if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
        retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER*)SQL_OV_ODBC3, 0);

        // Allocate connection handle  
        if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
            retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);

            // Set login timeout to 5 seconds  
            if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
                SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)5, 0);

                retcode = SQLDriverConnect( // SQL_NULL_HDBC  
                    hdbc,
                    desktopHandle,
                    (SQLCHAR*)"driver={PostgreSQL ODBC Driver(UNICODE)}",
                    _countof("driver={PostgreSQL ODBC Driver(UNICODE)}"),
                    OutConnStr,
                    255,
                    &OutConnStrLen,
                    SQL_DRIVER_PROMPT);

                // Allocate statement handle  
                if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
                    retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

                    // Process data  
                    if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
                        SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
                        std::cout << "connect successed!" << std::endl;
                    }

                    SQLDisconnect(hdbc);
                }

                SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
            }
        }
        SQLFreeHandle(SQL_HANDLE_ENV, henv);
    }
}
方法2:指定所有连接信息连接数据库
#include <windows.h>  
#include <sqlext.h>  
#include <iostream>

int main() {
    SQLHENV henv;
    SQLHDBC hdbc;
    SQLHSTMT hstmt;
    SQLRETURN retcode;

    SQLCHAR OutConnStr[255];
    SQLSMALLINT OutConnStrLen;

    HWND desktopHandle = GetDesktopWindow();   // desktop's window handle  

    // Allocate environment handle  
    retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);

    // Set the ODBC version environment attribute  
    if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
        retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER*)SQL_OV_ODBC3, 0);

        // Allocate connection handle  
        if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
            retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);

            // Set login timeout to 5 seconds  
            if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
                SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)5, 0);

                retcode = SQLDriverConnect( // SQL_NULL_HDBC  
                    hdbc,
                    NULL,
                    (SQLCHAR*)"Driver={PostgreSQL ODBC Driver(UNICODE)};Server=192.168.8.102;Port=5432;Database=postgres;UID=postgres;PWD=postgres",
                    SQL_NTS,
                    OutConnStr,
                    255,
                    &OutConnStrLen,
                    SQL_DRIVER_NOPROMPT);

                // Allocate statement handle  
                if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
                    retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

                    // Process data  
                    if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
                        SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
                        std::cout << "connect successed!" << std::endl;
                    }

                    SQLDisconnect(hdbc);
                }

                SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
            }
        }
        SQLFreeHandle(SQL_HANDLE_ENV, henv);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1.ODBC连接Postgresql 的相关文章

随机推荐

  • Linux用户和组管理

    Linux用户和组管理 一 实验目的 1 掌握添加用户 修改用户和删除用户信息的方法 2 掌握添加组 修改组户和删除组的方法 3 掌握修改用户权限的方法 二 实验内容 在字符界面下 xff0c 使用常用的Linux操作命令 xff0c 完成
  • 【Docker环境部署】kong网关搭建,konga安装(参考官网)

    一 下载镜像 docker pull postgres 9 6 docker pull kong docker pull pantsel konga 二 docker安装kong 1 创建网桥 docker network create k
  • 【VBA编程】VBA基础语法(二)

    一 VBA中的内置函数 合理使用函数不但可以节省处理数据的时间 xff0c 提高工作效率还可以降低编程的难度 xff0c 减少编写代码的工作量 例如想知道当前系统时间 xff1a Sub NowTime MsgBox 34 现在的时间是 x
  • 【VBA编程】Sub过程

    过程就是做一件事的经过 xff0c 由不同的操作按先后顺序排列 组合起来 VBA的基本过程有Function过程和Sub过程 过程保存在模块里 Excel对象 xff08 或窗体对象 xff09 也能保存过程 为了避免发生错误 xff0c
  • 【VBA编程】自定义函数,Function过程

    Function过程也称为函数过程 编写一个Function过程 xff0c 就是编写了一个函数 函数可以完成很多复杂的计算 xff0c 如想求A列的和 xff0c 可以使用SUM函数 xff1b Function过程同Sub过程一样 xf
  • 查看网站的技术架构

    想要快速查看网站使用的架构 xff0c 可以在浏览器中添加Wappalyzer插件 以火狐浏览器为例 火狐浏览器 更多工具 61 gt 面向开发者扩展 61 gt 查找Wappalyzer 61 添加 xff0c 即可 红框中即 Wappa
  • Linux服务器查看日志的几种方法

    1 进入日志文件所在的文件目录 xff0c 比如 xff1a cd opt tomcat7 logs 2 通过命令打开日志 xff0c 分析需求场景打开需要的日志 比如 xff1a tail f catalina out 3 常用命令一 x
  • Postman设置网络代理

    1 什么是网络代理 xff1f 在一个基本的网络会话中 xff0c 一个客户端发送一个请求到服务器 xff0c 服务器返回一个响应 xff1b 一个代理服务是一个应用程序或者系统 作为一个中介在你的电脑和互联网之间 客户端和服务器 xff0
  • Postman中的authorization

    1 概述 Authorization是验证是否拥有从服务器访问所需数据的权限 当发送请求时 xff0c 通常必须包含参数 xff0c 以确保请求具有访问和返回所需数据的权限 Postman提供了授权类型 xff0c 可以轻松地在Postma
  • 无法将非静态数据成员声明为 inline

    示例代码 xff1a span class token macro property span class token directive hash span span class token directive keyword inclu
  • C++中类的成员函数(方法)

    文章目录 成员函数 xff08 方法 xff09 示例1 xff1a 在结构体中引入成员函数示例2 xff1a 类示例3 xff1a 类内定义成员函数示例4 xff1a 类内声明 43 类外定义显示内敛的成员函数示例5 xff1a 类内声明
  • visual studio 2019 安装卸载问题

    1 visual studio 2019 安装 问题1 xff1a 如何安装visual studio 2019 企业版 可参考 xff1a http www winwin7 com soft 9019 html xiazai 问题2 xf
  • GDAL图像重采样

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • C#入门基础教程

    文章目录 C 基础入门基本用法 xff08 理解面向对象编程 xff09 示例1 xff1a 创建线类 关键字数据类型数值类型布尔与文本类型引用类型指针类型示例2 xff1a 数值类型示例3 xff1a 文本类型示例4 xff1a Obje
  • 1. 在VS2019上配置PIE.NET-SDK插件式环境(c#)

    1 开发环境部署 确保Win10系统安装Visual Studio2019安装PIESDK Net V6 3 Windows X64 exe 2 创建工程 1 选Windows窗口应用 xff0c 不然后面找不到 Net framwork
  • std::string、const char*、QString之间相互转换

    字符串转换 std string 转 const char std string str 61 34 string 34 const char cstr 61 str c str const char 转 std string span c
  • Cannot convert a symbolic Tensor (simple_rnn/strided_slice:0) to a numpy array. 报错 (解决方法)

    1 报错 问题 xff1a xff08 来自 Python深度学习 P164 165 xff09 在运行以下代码的时候 xff0c 报错 xff1a Cannot convert a symbolic Tensor simple rnn s
  • 图像几何校正

    几何校正中混淆的概念 名词描述几何校正几何畸变会给基于遥感图像的定量分析 变化检测 图像融合 地图测量或更新等处理带来误差 xff08 主要指二维平面坐标 xff09 xff0c 所以需要针对图像的几何畸变进行校正 xff0c 也就是几何校
  • 解决VS2015 安装失败问题,如安装包损坏或丢失

    搜索包路径选择下面这个路径
  • 1.ODBC连接Postgresql

    SQLDriverConnect SQLDriverConnect 是 SQLConnect 的替代方法 它支持需要比 SQLConnect 中的三个参数更多的连接信息的数据源 对话框来提示用户输入所有连接信息 xff0c 以及系统信息中未