linux下QT+ODBC访问达梦数据库

linux下QT访问达梦数据库

  • 一、环境说明
  • 二、驱动安装
    • 2.1 安装达梦客户端
    • 2.2 安装unixODBC
    • 2.3 unixODBC配置
    • 2.4 QT中使用QODBC访问达梦

一、环境说明

操作系统:中标麒麟桌面版,以下使用linux代替。
场景:在linux上安装达梦客户端,使用QTcreater+ODBC访问其它服务器上的达梦数据库。

二、驱动安装

2.1 安装达梦客户端

  1. 将下载的达梦安装包上传到linux;
  2. 解压安装包;
  3. 进入安装包,找到DMInstall.bin,修改权限chmod 755 ./DMInstall.bin
  4. 执行DMInstall.bin安装客户端;
  5. 在模式选择阶段,选择“客户端”,其它根据需要设置,直接下一步即可;
  6. 完成安装。

2.2 安装unixODBC

有的系统中可能已经安装过unixODBC,可在终端中输入:odbcinst -j查看安装信息,如果出现以下内容,则说明已经安装过:
unixODBC 2.3.1
DRIVERS…: /usr/local/etc/odbcinst.ini(路径可能不同,如/etc/odbcinst.ini)
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES…: /usr/local/etc/ODBCDataSources
USER DATA SOURCES…: /root/.odbc.ini
SQLULEN Size…: 8
SQLLEN Size…: 8
SQLSETPOSIROW Size.: 8

如果没有安装过,则需要下载unixODBC-2.3.1.tar.gz 编译安装,安装方法如下:
tar -zxvf unixODBC-2.3.1.tar.gz
cd unixODBC-2.3.1
./configure
make
make install

2.3 unixODBC配置

需要配置odbcinst.ini和odbc.ini两个文件,这两个文件的位置参见2.2中的显示信息。
1 配置odbcinst.ini
在odbcinst.ini文件中添加如下内容
[DM7]
Description = dm odbc
Driver = /opt/dmdbms/bin/libdodbc.so(该路径根据客户端安装路径调整,默认是该路径)
2 配置 odbc.ini
添加如下内容:
[dm]
Description = dm7 dsn
Driver = DM7
SERVER =192.168.3.222 —数据库服务端IP地址
UID = username —数据库实例用户名
PWD = password —数据库实例密码
TCP_PORT = 5236 —数据库端口号,默认5236

3 测试
配置完成后,在终端中输入:isql dm 测试是否可以正常连接
[root@localhost opt]# isql dm
±--------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
±--------------------------------------+
SQL> select 1;

±-----------+

| 1 |
±-----------+
| 1 |
±-----------+
SQLRowCount returns 1
1 rows fetched
SQL>

2.4 QT中使用QODBC访问达梦

  1. 在pro文件件中添加sql模块,增加如下内容:
    QT += sql

  2. 在需要使用odbc的地方增加头文件
    #include < QSqlDatabase>
    #include < QSqlQuery>

  3. 例子
    QSqlDatabase db = QSqlDatabase::addDatabase(“QODBC”);
    db.setDatabaseName(“DM”); //注意是DM,不是DM7
    db.setPort(5236);
    db.setHostName(“192.168.3.222”); //数据库服务端IP
    db.setUserName(“username”); //数据库用户名
    db.setPassword(“password”); //数据库密码
    //连接数据库
    if(db.open())
    {
    qDebug() << “数据库连接成功”;
    QString sql = "select * from “mod”.“test” "; //mod是模式名,test是表名
    QSqlQuery query(sql);
    while(query.next())
    {
    //逐列获取数据
    QString col1 = query.value(0).toString();
    QString col2 = query.value(1).toString();
    int col3 = query.value(2).toInt();
    }

    db.close(); //关闭连接
    }else
    {
    qDebug() << “数据库连接失败”;
    }

以上,欢迎交流学习。

你可能感兴趣的:(QT,数据库,linux,达梦DM,QT)