windows远程连接银河麒麟系统中的人大金仓数据库

以下来自人大金仓的官方:

概述

由微软提出的ODBC(开放式数据库互连),为访问数据库提供统一的接口(API)。其调用流程为:首先应用程序调用驱动管理器以加载与数据库相对应的ODBC驱动,而后在通过ODBC驱动与数据库建立连接通信。Kingbase ODBC驱动程序为动态链接库可以免安装,在Windows中的驱动为"kdbodbc30a.dll"以及在Linux中的驱动为"kdbodbcw.so"。

ODBC驱动引用

Windows驱动引用

1.通过登录官网www.kingbase.com.cn-产品与方案-通用性数据库-下载试用-了解详情-接口驱动,找到ODBC-WINDOWS获取ODBC Windows版驱动。

2.将获取到的官网驱动进行解压,解压后有两种版本的驱动,一种是64位版本,另一种是86位版本。在后续引用时需根据电脑的位数而进行选择(系统位数查看方法:使用"Win+R"组合键打开"运行对话框",在对话框中输入"msinfo32.exe"后点击确认按钮便能在"系统信息"中查看得到电脑的位数),只有电脑的位数与ODBC驱动的位数一致时,才能正常使用。如下图所示,可以查看得到系统为64位的版本,因此后续应选择"x64_ANSI_Release"文件中的ODBC驱动。

3.在确定使用的ODBC版本后,通过"Win+R"组合键打开"运行对话框",在对话框中输入"regedit"打开注册表编辑器。在下拉项"HKEY_LOCAL_MACHINE\SOFTWARE\ODBC"中选择"ODBCINST.INI",右击选择"新建-项"添加ODBC驱动。如下图所示,添加了名为"KingbaseES 8.6 ODBC Driver ANSI"的驱动。

4.新建驱动完成后,左键点击"KingbaseES 8.6 ODBC Driver ANSI"便能查看驱动的详细信息,若是新建驱动则需重新添加驱动信息如下图所示:

其中"Driver"、"Setup"属性的值为上述操作步骤2中与电脑位数的一致的.dll文件的路径与驱动名,其形式为"`PATH`\kdbodbc30a.dll"。

5.添加完整驱动信息后,还需在"ODBCINST.INI"中的"ODBC Drivers"中添加,新建的驱动名(必须与步骤3中新建的驱动名一致),如下图所示。

至此,Windows中ODBC驱动已经注册完成。

6.在ODBC数据源中添加新注册的驱动,首先打开ODBC数据源管理器:"开始"-"设置"-"控制面板"-"管理工具"-"数据源(ODBC)"(若是Windows11中"开始"-"设置"-"控制面板"-"Windows工具"-"ODBC数据源")。而后点击"系统DSN"-"添加"按钮,最后在弹出的对话框"创建新数据源"的窗口中选择上述新建的ODBC驱动。点击"完成"按钮后便会弹出"KingbaseES ODBC数据源配置"对话框,如下图所示:

7.在"KingbaseES ODBC数据源配置"对话框输入相应的要连接KingbaseES服务器端的信息,点击"测试"按钮后便可测试所配置的数据源能否连接上服务器。如下图弹出"Connection test"窗口并显示连接成功字样。

至此,Windows中驱动与数据源创建已完成,后续可使用该驱动或数据源连接服务器。

#include "mainwindow.h"

#include <QApplication>
#include <QSqlDatabase>
#include <QtSql/QSqlError>
#include <QDebug>

const QString host = "192.168.22.236";
const int port = 54321;
const QString dbName = "JTV";
const QString user = "system";
const QString password = "system";

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setHostName(host);
    db.setDatabaseName(dbName);
    db.setUserName(user);
    db.setPassword(password);
    db.setPort(port);
    db.setConnectOptions("SQL_ATTR_CONNECTION_TIMEOUT=2");

    db.open();
    if (!db.isOpen()) {
        qDebug() << db.lastError();
    }
    else{
        qDebug() << "connect is success!" << endl;
    }
    db.close();

    MainWindow w;
    w.show();
    return a.exec();
}
相关推荐
久绊A2 小时前
Python 基本语法的详细解释
开发语言·windows·python
菜鸟单飞12 小时前
介绍一款非常实用的PDF阅读软件!
windows·pdf·电脑
流星白龙17 小时前
【Linux】35.封装 UdpSocket(2)
linux·运维·windows
waicsdn_haha17 小时前
Visual Studio Code 2025 安装与高效配置教程
c语言·ide·windows·vscode·微软·编辑器·win7
ChoSeitaku19 小时前
12.重复内容去重|添加日志|部署服务到Linux上(C++)
linux·c++·windows
Major_xx19 小时前
装win10系统提示“windows无法安装到这个磁盘,选中的磁盘采用GPT分区形式”解决方法
windows·gpt
CoderIsArt19 小时前
Windows图形开发库Kernel32,OpenGL32,Glu32,Gdi32与User32
windows
伪装成塔的小兵19 小时前
Windows使用docker部署fastgpt出现的一些问题
windows·docker·容器·oneapi·fastgpt
开开心心就好21 小时前
娱乐使用,可以生成转账、图片、聊天等对话内容
windows·python·智能手机·软件工程·娱乐·软件需求
~kiss~1 天前
python的thrift2pyi学习
windows·python·学习