Linux 平台 通过ODBC访问数据库

news/2024/7/9 21:45:28 标签: 数据库, linux, postgresql, java, 程序人生

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  -lcrypt

CC = gcc
CFLAGS = -Wall -O -g

ALL : Test1 Test2

Test1 : TestODBCSample.c
 $(CC) $< $(CFLAGS) $(INCLUDEDIRS) $(LIBPATHS) $(LIBS) -o Test1

Test2 : ODBCRefcursorSupport.c
 $(CC) $< $(CFLAGS) $(INCLUDEDIRS) $(LIBPATHS) $(LIBS) -o Test2


clean:
 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 =

http://www.niftyadmin.cn/n/1602969.html

相关文章

Bootstrap 框架-表单(按钮/图像)

Bootstrap 框架的按钮也是一个独立部分&#xff0c;我们同样在不同的版本之中能找到对应的代码&#xff1a; LESS版本&#xff1a;查看源文件 buttons.lessSass版本&#xff1a;查看源文件 _buttons.scss已编译版本&#xff1a;查看源文件 bootstrap.css 文件第1992行&#xf…

Java全栈学习路线、学习资源和面试题一条龙

肝了一个月&#xff0c;终于把Java学习路线、面试题资源和电子书资源都整理好了。 Java 从基础到微服务的学习路线&#xff0c;其中还包括科班知识、学习建议、后续的学习引导和相应的学习资源&#xff08;视频、书籍、网站&#xff09;&#xff0c;还整理了Java 面试题&#…

Bootstrap 框架-网格系统

<link rel"stylesheet" href"//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css"> 实现原理 网格系统的实现原理非常简单&#xff0c;仅仅是通过定义容器大小&#xff0c;平分 12 份(也有平分成 24 份或 32 份&#xff0c;但 12 份…

那个经常准点下班,到处去参加面试的程序员,又涨薪了

前言 程序员小苏前几天去参加面试了&#xff0c;我问他是否准备跳槽&#xff1f;他说&#xff0c;没面上&#xff0c;也不会跳。 我问他&#xff0c;“你这样到处去面试&#xff0c;专门挑一些阿里、字节跳动、腾讯等一线互联网大厂&#xff0c;面不上&#xff0c;又耽误了时…

Bootstrap 框架-下拉菜单

<link rel"stylesheet" href"//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css"> 下拉菜单 在 Bootstrap 框架中的下拉菜单组件是一个独立的组件&#xff0c;根据不同的版本&#xff0c;它对应的文件&#xff1a; ☑ LESS版本&a…

Bootstrap 框架-按钮组组件

<link rel"stylesheet" href"//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"> 按钮组也是一个独立的组件&#xff0c;所以可以找到对应的源码文件&#xff1a; ☑ LESS 版本&#xff1a;对应的源文件为 buttons.less ☑ Sass…

阿里二面,面试官:DDD 的三层含义是什么?我当场就懵了

领域驱动设计包含三层含义&#xff1a; 协作层架构层实现层 协作层 协作层强调的是&#xff0c;需求不是无源之水、无根之木&#xff0c;需求有它的来源&#xff0c;追溯上去&#xff0c;需求常常来自技术之外的业务领域。 因此&#xff0c;软件开发不仅仅是软件与编程&…

Java入门教程分享:入门+提升+精通,30天可上岗

目前的Java视频教程是有不少&#xff0c;但是你有了视频教程但是没有学习路线该怎么去学习呢&#xff1f;所以就先来看看学习路线图再来看看视频教程吧&#xff0c;一步一步来。 接下来再给大家看一下教程&#xff0c;这套教程将java的入门基础知识技能提升小项目知识贯穿起来&…