Linux 平台 通过ODBC访问数据库

这是一个小众的知识点,最近做测试需要使用多种语言访问数据库,其中需要ODBC驱动访问db,这里做个记录。

一 环境准备

  1. 数据库创建好测试账号 用户名密码
  2. 安装 Libtool 1.5.10及以上版本以及 unixODBC-develyum install -y libtool unixODBC-devel
  3. 下载驱动 PolarDB-ODBC_Linux_X86_64.tar.gz

二 配置环境变量

  1. 安装驱动 解压缩 PolarDB-ODBC_Linux_X86_64.tar.gz 到 一个目录,比如 /usr/local/polardb-odbc/
  2. 配置环境变量export LD_LIBRARY_PATH = /usr/local/polardb-odbc/lib设置环境变量ODBCINI的路径指向。默认是 /etc/odbcinst.iniexportODBCINI= /etc/odbcinst.ini export ODBCSYSINI = /etc/
  3. 配置 odbcinst.ini文件默认该文件内已经有 [PostgreSQL] [MySQL] 两种数据,可以增加如下内容
[POLARDB]
Description = ODBC for POLARDB
Driver      = /usr/local/polardb-odbc/lib/unix/polardb-odbc.so
Setup       = /usr/local/polardb-odbc/lib/unix/libodbcpolardbS.so
Driver64    = /usr/local/polardb-odbc/lib/unix/polardb-odbc.so
Setup64     =/usr/local/polardb-odbc/lib/unix/libodbcpolardbS.so
Database    = test_db
Servername  = 10.10.10.5
Password    = XXXXXX
Port        = 5433
Username    = test_user
Trace       = yes
TraceFile   = /tmp/odbc.log
FileUsage   = 1
  1. 连接PolarDB ,使用 isql -v POLARDB这里的 POLARDB 就是 /etc/odbcinst.ini 文件的配置的 POLARDB 区块儿。

测试成功。

编译

需要修改 TestODBCSample.c 中 connect 函数中的 user参数的值,使用本文开头创建的数据库账号用户名。

#
INCLUDEDIRS = -I../include
#LIBPATHS= -L/usr/local/unixODBC
LIBPATHS= -L/usr/lib64/
LIBS=-lodbc -lodbcinst  -lcryptCC = gcc
CFLAGS = -Wall -O -gALL : Test1 Test2Test1 : TestODBCSample.c$(CC) $< $(CFLAGS) $(INCLUDEDIRS) $(LIBPATHS) $(LIBS) -o Test1Test2 : ODBCRefcursorSupport.c$(CC) $< $(CFLAGS) $(INCLUDEDIRS) $(LIBPATHS) $(LIBS) -o Test2clean:rm -rf *.o Test1 Test2

遇到的问题

1.通过odbc 访问连接报错,其实 TestODBCSample.c 里面的connect 函数中的 user参数需要替换为本文开头创建的用户名。

2.编译语法问题

编译C++ 通过ODBC 访问数据库的脚本报错:

Makefile:7: *** missing separator. Stop.

其实这里涉及到 makefile的语法规则,makefile文件禁止乱用 TAB,只有命令所在的行才能且只能以TAB开头,

其他的如,make变量的定义、赋值,make内定函数如(error "strings")都不能以TAB开头,不然make会将其作为命令来处理。

如果排除了TAB用空格代替的问题后、以及由中文“:”等问题后,问题还存在 那么很可能是文件编码格式的问题 查看一下Makefile 文件编码格式是不是utf-8的,还带有BOM标记在文件头

[root@db1 samples]# xxd -l 16 Makefile
0000000: 230a 494e 434c 5544 4544 4952 5320 3d20  #.INCLUDEDIRS =

Linux 平台 通过ODBC访问数据库相关推荐

  1. Linux 平台配置ODBC连接达梦数据库

    ODBC连接DM数据库 1.手工编译安装 2.配置驱动信息 odbcinst.ini 和数据源信息 odbc.ini 3.测试数据源连接 Linux 平台配置ODBC连接达梦数据库 1.手工编译安装 ...

  2. c语言访问数据库 不用odbc,急问ODBC访问数据库问题

    急问ODBC访问数据库问题 c语言用ODBC访问access,编译时出错,都是头文件的错误,实在搞不明白,恳求各位大牛大虾们指教小弟!!急~~~~~~~~~~ #include #include #i ...

  3. 如何在linux上创建数据库,在LINUX平台上手动创建数据库(oracle 10g)

    在LINUX平台上手动创建数据库(oracle 10g) 安装完oracle软件后,不使用dbca创建数据库,而手动创建数据库,主要目的是了解数据库创建的过程中主要进行了那些操作. 1.首先设置要创建 ...

  4. Win32 API 和 ODBC 访问数据库一

    准备用Win32 API和ODBC来访问数据库: 代码如下: /*------------------------------------------------------------win32, ...

  5. ODBC访问数据库(转载)

    使用ODBC API之前要用到的头文件和LIB库 #include "sql.h"              // This is the the main include for ...

  6. 使用ODBC访问数据库(一)

    使用ODBC API之前要用到的头文件和LIB库 #include "sql.h"              // This is the the main include for ...

  7. 可遇不可求的BUG之采用MYSQL odbc 3.51访问数据库返回值缺失

    一句话 巧妇难为无米之炊,驱动还是要及时更新啊... 闲话休说,上图: 1.数据库中存储的值为 "布尔玛" 2.用3.51版本的MYSQL ODBC 驱动访问MYSQL 5.0 数 ...

  8. Oracle在Linux平台安装时涉及的/etc/security/limits.conf

    在Linux平台上安装Oracle数据库时,会涉及到一个资源限制的问题,与之相关的是一个/etc/security/limits.conf文件.用Linux命令man limits.conf可获得关于 ...

  9. Delphi 访问数据库

    实现对SQLServer数据库的操作了.具体步骤如下:     第一步,注册ODBC数据源.这是至关重要的一步,否则 就无法实现对数据库的访问.例如,我们定义一个可访问SQL -Server服务器上z ...

  10. oracle 手动注册服务器,linux下手动创建Oracle数据库

    在linux平台上手动创建数据库(Oracle 10g),安装Oracle软件后,用手动创建数据库可以锻炼自己能力并能够了解数据库创建的全过程,步骤如下: 1.创建Oracle的SID,如果在linu ...

最新文章

  1. python如何创建函数对列表里的元素进行分类_zip()函数如何在python中遍历多个列表?...
  2. SQL Server-表表达式基础回顾(二十四)
  3. 对c语言字符数组描述错误的是,下述对C语言字符数组的描述中错误的是( )。
  4. 2.1基本算法之枚举_1749数字方格
  5. Android笔记 定义意图过滤器intent- filter demo
  6. 定义域是取交集吗_高中数学;函数定义域秒解技巧(学好函数突破数学)
  7. Elasticsearch地理位置
  8. 攻防世界 mobile 安卓移动端简单题练习区 答题(1-12题解)
  9. 现在完成进行时和现在完成时的区别
  10. Jupyter Notebook 自动生成目录(超级实用)
  11. 微信与企业微信的十个区别
  12. JAVA POI导入Excel, 和百分比有关的 百分数格式问题
  13. 微生物群落基于KEGG预测功能的丰度分布图绘制
  14. 腾讯云主机安装mysql
  15. 服务器怎么安装debian系统,图解Debian10Linux系统的安装步骤
  16. 语音合成——闽南语合成(1)
  17. “易融窃贼”--网贷平台隐私窃取
  18. \t\t让米饭更好吃
  19. libtorch tensor的使用
  20. c语言清除文件缓存区,C语言之清空缓存区

热门文章

  1. plsql导出表结构语句
  2. 飞思卡尔单片机c语言编程详解,主流16位单片机学习详解:飞思卡尔MC9S12G系列...
  3. alc662声卡注入id_使用Clover 开启ALC662声卡原生AppleHDA驱动
  4. Stata | 导入导出文件
  5. win8 计算机服务,Win8.1系统下哪些服务可以关闭
  6. arcgis拓扑与修复
  7. windows kafka安装
  8. 数字电子技术第二章--逻辑代数与逻辑函数化简
  9. 数论基础——扩展欧几里德算法解析
  10. Mock Server介绍