odbc mysql 配置文件_ODBC连接主流数据库的配置方法
準(zhǔn)備工作
安裝ODBC基本組件:
# yum install -y unixODBC unixODBC-devel
安裝完成后可用odbcinst -j命令查看安裝配置文件所在的位置,有兩個比較常用的配置,一個是ODBC驅(qū)動配置,默認(rèn)在/etc/odbcinst.ini,另一個是系統(tǒng)數(shù)據(jù)源配置,默認(rèn)在/etc/odbc.ini。
連接MySQL
1. 安裝MySQL連接驅(qū)動
# yum install -y mysql-connector-odbc
安裝好驅(qū)動后,驅(qū)動信息會自動追加到驅(qū)動配置odbcinst.ini中,像這樣:
[MySQL]
Description=ODBC for MySQL
Driver=/usr/lib/libmyodbc5.so
Setup=/usr/lib/libodbcmyS.so
Driver64=/usr/lib64/libmyodbc5w.so
Setup64=/usr/lib64/libodbcmyS.so
FileUsage=1
2. 配置MySQL數(shù)據(jù)源(DSN)
數(shù)據(jù)源可定義在系統(tǒng)DSN中,也可以定義在用戶DSN中,視需要而定。以下是一個配置例子。
[mysql223]
driver = MySQL
server = 192.1.1.223
port = 3306
user = root
password = 11111111
其中:driver是MySQL驅(qū)動庫的名稱,要與odbcinst.ini中配的名字一致,另外也可以直接寫.so文件的位置,但不推薦這么做。
如果配置不指定user和password,那么在連接時必須給定,命令行和API都有相應(yīng)的選項或參數(shù)。
3. 連接測試
isql命令格式:isql DSN [user [password]] [options]
如果配置指定了用戶名和密碼,連接時指定DSN即可:isql mysql223。
在連接時指定用戶名和密碼:isql mysql223 root 62960909。
連接SQLServer
1. 安裝SQLServer連接驅(qū)動
# yum install -y freetds freetds-devel
安裝好后可用tsql -C查看編譯時的選項信息。
如果驅(qū)動安裝完后沒有將驅(qū)動信息更新到odbcinst.ini中,則需要手工配置。
[SQLServer]
Description = ODBC for SQLServer
Driver = /usr/lib/libtdsodbc.so
Setup = /usr/lib/libtdsS.so
FileUsage = 1
其中.so文件的路徑要與實際安裝位置相符。
2. 配置數(shù)據(jù)源
數(shù)據(jù)源配置文件為freetds.conf,一般在/etc目錄下。以下是個示例:
[sqlsever224]
host = 192.1.1.224
port = 1433
tds version = 7.0
3. 連接測試
# tsql -S sqlserver224 -U test -P test123
連接Oracle
1. 安裝驅(qū)動
不同版本的Oracle對應(yīng)驅(qū)動版本也不太一樣,可到官網(wǎng)下載與數(shù)據(jù)庫版本對應(yīng)的驅(qū)動,至少要安裝basic,develop,odbc包,建議安裝sqlplus包,便于排障。
# rpm -ivh *.rpm
2. 配置環(huán)境變量
export ORACLE_HOME=/usr/lib/oracle/10.2.0.4/client
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
注意路徑要與實際相符。
3. 測試連通性
# sqlplus test/test123@192.1.1.225:1521/orcl
如果連不通,檢查客戶端與Oracle服務(wù)器網(wǎng)絡(luò)是否連通,另外檢查服務(wù)器上tnsnames.ora文件中使用的主機名還是IP地址,建議用IP,確保客戶端能正常訪問。連接成功后再往下配置ODBC。
4. 配置ODBC
在odbcinst.ini中添加Oracle驅(qū)動。
[Oracle]
Description = ODBC for Oracle
Driver = /usr/lib/oracle/10.2.0.4/client/lib/libsqora.so.10.1
Setup =
在odbc.ini中配置數(shù)據(jù)源。
[oracle225]
driver = Oracle
server = 192.1.1.225
port = 1521
servername = orcl255
其中servername是tnsnames.ora中配置的SID,而tnsnames.ora的位置由TNS_NAMES環(huán)境變量指定。
# export TNS_NAMES=/etc
# cat /etc/tnsnames.ora
orcl255 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP) (HOST = 192.1.1.225) (PORT = 1521))
(CONNECT_DATA = (SERVICE_NAME = ORCL))
)
配置好后可用isql命令測試連接。
# isql oracle225 system keyouhac
連接達(dá)夢數(shù)據(jù)庫
達(dá)夢數(shù)據(jù)庫是款國產(chǎn)數(shù)據(jù)庫,應(yīng)用還有待推廣。
在Linux環(huán)境下通過-i選項進(jìn)行交互式安裝,這里選擇自定義安裝方式,安裝組件選擇客戶端和ODBC相關(guān)驅(qū)動,安裝完成后即可用客戶端工具連接數(shù)據(jù)庫測試。
$ sudo ./DMInstall.bin -i
$ /opt/dmdbms/tool/disql
SQL> conn SYSDBA/SYSDBA@192.1.1.190
SQL> select * from dmhr.job;
也可以通過unixODBC提供的isql工具連接,但需要配置驅(qū)動和數(shù)據(jù)源。
$ cat /etc/odbcinst.ini
[DM7]
Description = ODBC DRIVER FOR DM7
Driver = /opt/dmdbms/bin/libodbc.so
$ cat /etc/odbc.ini
[dm190]
Description = dmdb
Driver = DM7
SERVER = 192.1.1.190
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236
$ isql dm190
$ isql dm190 SYSDBA SYSDBA
ODBC編程
以下是通過ODBC連接mysql數(shù)據(jù)庫并執(zhí)行sql語句的示例,其他類型數(shù)據(jù)庫類似。
#include
#include
#include
#include
HENV henv;
HDBC hdbc;
HSTMT hsmt;
SQLRETURN rc;
int Success(SQLRETURN ret) {
return ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO;
}
int Failed(SQLRETURN ret) {
return !Success(ret);
}
void ODBCError(SQLSMALLINT handleType, SQLHANDLE handle) {
BYTE buf[256], sqlstate[256];
SQLGetDiagRec(handleType, handle, 1, sqlstate, NULL, buf, sizeof(buf), NULL);
printf("[%s]%s", sqlstate, buf);
}
int main() {
if (Failed(SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv))) {
ODBCError(SQL_HANDLE_ENV, henv);
return -1;
}
SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);
if (Failed(SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc))) {
ODBCError(SQL_HANDLE_DBC, hdbc);
return -1;
}
if (Failed(SQLConnect(hdbc, (SQLCHAR*)"mysql", SQL_NTS, (SQLCHAR*)"root", SQL_NTS,
(SQLCHAR*)"123456", SQL_NTS))) {
ODBCError(SQL_HANDLE_DBC, hdbc);
return -1;
}
{
char user[128], host[128], pass[128];
long cbuser = 0, cbhost = 0, cbpass = 0;
if (Failed(SQLAllocStmt(hdbc, &hsmt))) {
ODBCError(SQL_HANDLE_STMT, hsmt);
return -1;
}
SQLExecDirect(hsmt, (SQLCHAR*)"select user, host, password from mysql.user", SQL_NTS);
SQLBindCol(hsmt, 1, SQL_C_CHAR, user, sizeof(user), &cbuser);
SQLBindCol(hsmt, 2, SQL_C_CHAR, host, sizeof(host), &cbhost);
SQLBindCol(hsmt, 3, SQL_C_CHAR, pass, sizeof(pass), &cbpass);
while (Success(SQLFetchScroll(hsmt, SQL_FETCH_NEXT, 0)))
printf("user=[%s], host=[%s], pass=[%s]\n", user, host, pass);
}
SQLFreeHandle(SQL_HANDLE_STMT, hsmt);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 0;
}
「?? 感謝大家」點贊支持下吧,讓更多的人也能看到這篇內(nèi)容(收藏不點贊,都是耍流氓 -_-)
歡迎在留言區(qū)與我分享你的想法,也歡迎你在留言區(qū)記錄你的思考過程
總結(jié)
以上是生活随笔為你收集整理的odbc mysql 配置文件_ODBC连接主流数据库的配置方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: node中间件mysql_nodejs
- 下一篇: java mysql数据去重_java使