新聞中心
在計(jì)算機(jī)領(lǐng)域,數(shù)據(jù)庫(kù)是一個(gè)非常重要的概念,它是基于電腦設(shè)備的數(shù)據(jù)統(tǒng)一存儲(chǔ)的一種體系結(jié)構(gòu),能夠方便地對(duì)數(shù)據(jù)進(jìn)行管理、維護(hù)和查詢。而在實(shí)際開發(fā)應(yīng)用程序時(shí),我們經(jīng)常需要從程序中讀取或存儲(chǔ)數(shù)據(jù)到數(shù)據(jù)庫(kù)中。為了實(shí)現(xiàn)這一目的,就需要使用到ODBC連接數(shù)據(jù)庫(kù),本文將就進(jìn)行詳細(xì)解析。

一、ODBC是什么?
ODBC(Open Database Connectivity)即開放數(shù)據(jù)庫(kù)互連性,是一種開放式的數(shù)據(jù)庫(kù)連接接口,用于連接和操作數(shù)據(jù)庫(kù)。它是由Microsoft公司開發(fā),用于在Windows平臺(tái)上操作數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)。ODBC接口可以允許程序員在API級(jí)別問(wèn)數(shù)據(jù)庫(kù),而不必關(guān)心底層數(shù)據(jù)庫(kù)管理系統(tǒng)的特點(diǎn)和差異。ODBC是跨平臺(tái)的,使得程序員可以以一種平臺(tái)無(wú)關(guān)的方式訪問(wèn)不同類型的數(shù)據(jù)庫(kù),例如SQL Server、Oracle、MySQL等數(shù)據(jù)庫(kù)管理系統(tǒng)。
二、ODBC的特點(diǎn)
ODBC有以下幾個(gè)主要特點(diǎn):
1.可移植性
ODBC是跨平臺(tái)標(biāo)準(zhǔn),允許程序代碼無(wú)需修改就可以連接不同類型的數(shù)據(jù)庫(kù)。
2.高性能
ODBC連接數(shù)據(jù)庫(kù)時(shí),可以通過(guò)數(shù)據(jù)緩存等技術(shù)提高數(shù)據(jù)訪問(wèn)的效率和性能。
3.易用性
ODBC提供了易用的API接口,使得程序員可以通過(guò)簡(jiǎn)單的幾行代碼就可以連接和操作數(shù)據(jù)庫(kù)。
4.靈活性
ODBC提供了一些配置項(xiàng)和接口,可以允許程序員定制和擴(kuò)展ODBC連接數(shù)據(jù)庫(kù)的行為和特性。
三、ODBC連接數(shù)據(jù)庫(kù)的步驟
下面介紹一下通過(guò)ODBC連接數(shù)據(jù)庫(kù)的具體操作步驟:
1.配置ODBC數(shù)據(jù)源
需要在計(jì)算機(jī)上配置ODBC數(shù)據(jù)源,以允許程序連接到數(shù)據(jù)庫(kù)??梢酝ㄟ^(guò)“控制面板”->“管理工具”->“ODBC數(shù)據(jù)源”來(lái)打開ODBC數(shù)據(jù)源配置對(duì)話框,添加一個(gè)新的數(shù)據(jù)源。ODBC數(shù)據(jù)源配置對(duì)話框會(huì)顯示所有已安裝的ODBC驅(qū)動(dòng)程序,程序員可以選擇符合當(dāng)前需要的驅(qū)動(dòng)程序,并按照對(duì)話框的指導(dǎo)填寫相應(yīng)的字段,例如源名稱、驅(qū)動(dòng)程序、服務(wù)器名稱、端口、用戶名、密碼、默認(rèn)數(shù)據(jù)庫(kù)等等。配置完成后,可以通過(guò)ODBC管理工具進(jìn)行驗(yàn)證和測(cè)試,確認(rèn)是否能夠和數(shù)據(jù)庫(kù)成功建立連接。
2.編寫程序代碼
程序員可以使用C/C++、Java、PHP等編程語(yǔ)言編寫與ODBC連接數(shù)據(jù)庫(kù)的代碼。需要使用ODBC的頭文件和庫(kù)文件,建立ODBC連接數(shù)據(jù)庫(kù)的環(huán)境。之后,程序員需要調(diào)用ODBC的API接口,例如SQLConnect()或SQLDriverConnect()函數(shù)等,傳遞連接字符串等必要參數(shù)來(lái)建立到數(shù)據(jù)庫(kù)的連接。連接成功后,就可以對(duì)數(shù)據(jù)庫(kù)做一些操作,例如查詢數(shù)據(jù)、插入數(shù)據(jù)、更新數(shù)據(jù)等。
3.釋放資源
在程序完成數(shù)據(jù)庫(kù)操作后,必須手動(dòng)釋放所有ODBC連接數(shù)據(jù)庫(kù)的資源??梢酝ㄟ^(guò)調(diào)用ODBC提供的API接口,例如SQLDisconnect()、SQLFreeHandle()等函數(shù)來(lái)釋放連接資源和句柄。
四、ODBC連接數(shù)據(jù)庫(kù)的實(shí)例
下面給出一個(gè)ODBC連接數(shù)據(jù)庫(kù)的C++實(shí)現(xiàn)的簡(jiǎn)單示例:
// ODBCExample.cpp : Defines the entry point for the console application.
//
#include “stdafx.h”
#include
#include
#include
// The maximum length of the SQL error message
#define SQL_MAX_MESSAGE_LENGTH 1024
// Print the SQL error message
void PrintSQLError(TCHAR *szFunction, SQLHANDLE handle, SQLALLINT type)
{
if (type == SQL_HANDLE_DBC)
{
SQLWCHAR sqlState[6], errorMessage[SQL_MAX_MESSAGE_LENGTH+1];
SQLINTEGER nativeError;
SQLALLINT messageLength;
SQLGetDiagRec(type, handle, 1, sqlState, &nativeError, errorMessage, SQL_MAX_MESSAGE_LENGTH+1, &messageLength);
_tprintf(_T(“%s fled. SQLSTATE=%s, native error=%ld, message=%s\n”), szFunction, sqlState, nativeError, errorMessage);
}
}
int _tmn(int argc, _TCHAR *argv[])
{
SQLRETURN retCode;
SQLHANDLE hEnv = SQL_NULL_HENV;
SQLHANDLE hConn = SQL_NULL_HDBC;
SQLHANDLE hStmt = SQL_NULL_HSTMT;
// Allocate an environment handle
retCode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv);
if (retCode != SQL_SUCCESS && retCode != SQL_SUCCESS_WITH_INFO)
{
_tprintf(_T(“SQLAllocHandle(SQL_HANDLE_ENV) fled.\n”));
return 1;
}
// Set the ODBC version to 3.0
retCode = SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
if (retCode != SQL_SUCCESS && retCode != SQL_SUCCESS_WITH_INFO)
{
_tprintf(_T(“SQLSetEnvAttr(SQL_ATTR_ODBC_VERSION) fled.\n”));
PrintSQLError(_T(“SQLSetEnvAttr”), hEnv, SQL_HANDLE_ENV);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
return 1;
}
// Allocate a connection handle
retCode = SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hConn);
if (retCode != SQL_SUCCESS && retCode != SQL_SUCCESS_WITH_INFO)
{
_tprintf(_T(“SQLAllocHandle(SQL_HANDLE_DBC) fled.\n”));
PrintSQLError(_T(“SQLAllocHandle”), hEnv, SQL_HANDLE_ENV);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
return 1;
}
// Connect to the database
SQLWCHAR *dsnName = L”O(jiān)DBCExampleDSN”; // Data source name
SQLWCHAR *userName = L”odbcexampleuser”; // User name
SQLWCHAR *password = L”odbcexamplepassword”; // Password
retCode = SQLConnect(hConn, dsnName, SQL_NTS, userName, SQL_NTS, password, SQL_NTS);
if (retCode != SQL_SUCCESS && retCode != SQL_SUCCESS_WITH_INFO)
{
_tprintf(_T(“SQLConnect() fled.\n”));
PrintSQLError(_T(“SQLConnect”), hConn, SQL_HANDLE_DBC);
SQLFreeHandle(SQL_HANDLE_DBC, hConn);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
return 1;
}
// Allocate a statement handle
retCode = SQLAllocHandle(SQL_HANDLE_STMT, hConn, &hStmt);
if (retCode != SQL_SUCCESS && retCode != SQL_SUCCESS_WITH_INFO)
{
_tprintf(_T(“SQLAllocHandle(SQL_HANDLE_STMT) fled.\n”));
PrintSQLError(_T(“SQLAllocHandle”), hConn, SQL_HANDLE_DBC);
SQLDisconnect(hConn);
SQLFreeHandle(SQL_HANDLE_DBC, hConn);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
return 1;
}
// Execute a SQL statement
SQLWCHAR *sqlStatement = L”SELECT * FROM Customers”;
retCode = SQLExecDirect(hStmt, sqlStatement, SQL_NTS);
if (retCode != SQL_SUCCESS && retCode != SQL_SUCCESS_WITH_INFO)
{
_tprintf(_T(“SQLExecDirect(%s) fled.\n”), sqlStatement);
PrintSQLError(_T(“SQLExecDirect”), hStmt, SQL_HANDLE_STMT);
SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
SQLDisconnect(hConn);
SQLFreeHandle(SQL_HANDLE_DBC, hConn);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
return 1;
}
// Fetch the result set data
SQLALLINT columnCount;
retCode = SQLNumResultCols(hStmt, &columnCount);
if (retCode != SQL_SUCCESS && retCode != SQL_SUCCESS_WITH_INFO)
{
_tprintf(_T(“SQLNumResultCols() fled.\n”));
PrintSQLError(_T(“SQLNumResultCols”), hStmt, SQL_HANDLE_STMT);
SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
SQLDisconnect(hConn);
SQLFreeHandle(SQL_HANDLE_DBC, hConn);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
return 1;
}
_tprintf(_T(“The query result set has %d columns:\n”), columnCount);
while (SQLFetch(hStmt) == SQL_SUCCESS)
{
for (int i = 1; i
{
SQLWCHAR columnName[256];
SQLLEN columnNameLength, dataType, columnSize, decimalDigits, nullable;
SQLDescribeCol(hStmt, i, columnName, 256, &columnNameLength, &dataType, &columnSize, &decimalDigits, &nullable);
SQLWCHAR columnValue[256];
SQLLEN columnValueLength;
SQLGetData(hStmt, i, SQL_C_WCHAR, columnValue, 256, &columnValueLength);
_tprintf(_T(“%s=%s”), columnName, columnValue);
if (i
_tprintf(_T(“, “));
else
_tprintf(_T(“\n”));
}
}
// Free up allocated resources
SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
SQLDisconnect(hConn);
SQLFreeHandle(SQL_HANDLE_DBC, hConn);
SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
return 0;
}
上述示例程序演示了如何使用ODBC接口連接到一個(gè)數(shù)據(jù)庫(kù),并執(zhí)行SQL查詢語(yǔ)句。在實(shí)際應(yīng)用程序中,應(yīng)該根據(jù)實(shí)際情況進(jìn)行適當(dāng)?shù)男薷暮蛿U(kuò)展,以滿足具體業(yè)務(wù)需求。
五、
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
什么是ODBC ?
1、ODBC(Open Database Connectivity,開放數(shù)據(jù)庫(kù)互連)是微軟公司開放服務(wù)結(jié)構(gòu)(WOSA,Windows Open Services Architecture)中有關(guān)數(shù)據(jù)庫(kù)的一個(gè)組成部分。
2、ODBC技術(shù)。ODBC的基本思想是為用戶提供簡(jiǎn)單、標(biāo)準(zhǔn)、透明的數(shù)據(jù)庫(kù)連接的公共編程接口,開發(fā)廠商根據(jù)ODBC的標(biāo)準(zhǔn)去實(shí)現(xiàn)底層的驅(qū)動(dòng)程序,這個(gè)驅(qū)動(dòng)對(duì)用戶是透明的,并允許根據(jù)不同的DBMS采用不同的技術(shù)加以優(yōu)化實(shí)現(xiàn),這就利于不斷吸收新的技術(shù)而趨完善。
3、一種動(dòng)態(tài)鏈接庫(kù) (DLL),支持 ODBC 的應(yīng)用程序(如 Excel)可以用它來(lái)訪問(wèn) ODBC 數(shù)據(jù)源。每個(gè) ODBC 驅(qū)動(dòng)程序針對(duì)一個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng) (DBMS),如 SQL Server、Access 等等。
4、MyODBC是提供標(biāo)準(zhǔn)ODBC界面存取的程序,用VB、VC、BCB、Access等等透過(guò)ODBC直接存取數(shù)據(jù)庫(kù),減少Web Server更新MySQL數(shù)據(jù)庫(kù)。
5、unixodbc是一個(gè)來(lái)連接數(shù)據(jù)庫(kù)的組件。該版本主要是支持 64 位的 SQLLEN,修復(fù)了一些bug;另外驅(qū)動(dòng)部分和圖形化設(shè)置工具分開為兩個(gè)獨(dú)立的項(xiàng)目。它能讓你在Unix/Linux系統(tǒng)下使用ODBC。
參考資料來(lái)源:
百度百科—unixodbc
百度百科—myodbc
百度百科—ODBC驅(qū)動(dòng)程序
百度百科—ODBC技術(shù)
百度百科—ODBC數(shù)據(jù)源
ODBC是一種連接數(shù)據(jù)庫(kù)的開放標(biāo)準(zhǔn)。
ODBC(Open
DataBase
Connectivity,開放數(shù)據(jù)庫(kù)互連)是微軟公司開放服務(wù)結(jié)構(gòu)(WOSA,Windows
Open
Services
Architecture)中有關(guān)數(shù)據(jù)庫(kù)的一個(gè)組成部分,它建立了一組規(guī)范,并提供了一組對(duì)數(shù)據(jù)庫(kù)訪問(wèn)的標(biāo)準(zhǔn)API(應(yīng)用程序編程接口)。這些API利用SQL來(lái)完成其大部分任務(wù)。ODBC本身也提供了對(duì)SQL語(yǔ)言的支持,用戶可以直接將SQL語(yǔ)句送給ODBC。
它本身就是為了是數(shù)據(jù)庫(kù)的使用者不必考慮使用的是何種數(shù)據(jù)庫(kù)而只需要相同的操作而設(shè)計(jì)的。
ODBC是Open
Database
Connect即開放數(shù)據(jù)庫(kù)互連的簡(jiǎn)稱,它是由Microsoft
公司于1991
年提出的一個(gè)用于訪問(wèn)數(shù)據(jù)庫(kù)的統(tǒng)一界面標(biāo)準(zhǔn),是應(yīng)用程序和數(shù)據(jù)庫(kù)系統(tǒng)之間的中間件。它通過(guò)使用相應(yīng)應(yīng)用平臺(tái)上和所需數(shù)據(jù)庫(kù)對(duì)應(yīng)的驅(qū)動(dòng)程序與應(yīng)用程序的交互來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作,避免了在應(yīng)用程序中直接調(diào)用與數(shù)據(jù)庫(kù)相關(guān)的操作,從而提供了數(shù)據(jù)庫(kù)的獨(dú)立性。
ODBC
主要由驅(qū)動(dòng)程序和驅(qū)動(dòng)程序管理器組成。驅(qū)動(dòng)程序是一個(gè)用以支持ODBC
函數(shù)調(diào)用的模塊,每個(gè)驅(qū)動(dòng)程序?qū)?yīng)于相應(yīng)的數(shù)據(jù)庫(kù),當(dāng)應(yīng)用程序從基于一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)移植到另一個(gè)時(shí),只需更改應(yīng)用程序中由ODBC
管理程序設(shè)定的與相應(yīng)數(shù)據(jù)庫(kù)系統(tǒng)對(duì)應(yīng)的別名即可。驅(qū)動(dòng)程序管理器可鏈接到所有ODBC
應(yīng)用程序中,它負(fù)責(zé)管理應(yīng)用程序中ODBC
函數(shù)與DLL
中函數(shù)的綁定。
ODBC
使用層次的方法來(lái)管理數(shù)據(jù)庫(kù),在數(shù)據(jù)庫(kù)通信結(jié)構(gòu)的每一層,對(duì)可能出現(xiàn)依賴數(shù)據(jù)庫(kù)產(chǎn)品自身特性的地方,ODBC
都引入一個(gè)公共接口以解決潛在的不一致性,從而很好地解決了基于數(shù)據(jù)庫(kù)系統(tǒng)應(yīng)用程序的相對(duì)獨(dú)立性,這也是ODBC
一經(jīng)推出就獲得巨大成功的重要原因之一。
從結(jié)構(gòu)上分,ODBC
分為單束式和多束式兩類。
1.單束式驅(qū)動(dòng)程序
單束式驅(qū)動(dòng)程序介于應(yīng)用程序和數(shù)據(jù)庫(kù)之間,像中介驅(qū)動(dòng)程序一樣數(shù)據(jù)提供一個(gè)統(tǒng)一的數(shù)據(jù)訪問(wèn)方式。當(dāng)用戶進(jìn)行數(shù)據(jù)庫(kù)操作時(shí),應(yīng)用程序傳遞一個(gè)ODBC
函數(shù)調(diào)用給ODBC
驅(qū)動(dòng)程序管理器,由ODBC
API
判斷該調(diào)用是由它直接處理并將結(jié)果返回還是送交驅(qū)動(dòng)程序執(zhí)行并將結(jié)果返回。由上可見(jiàn),單束式驅(qū)動(dòng)程序本身是一個(gè)數(shù)據(jù)庫(kù)引擎,由它直接可完成對(duì)數(shù)據(jù)庫(kù)的操作,盡管該數(shù)據(jù)庫(kù)可能位于網(wǎng)絡(luò)的任何地方。
2.多束式驅(qū)動(dòng)程序
多束式驅(qū)動(dòng)程序負(fù)責(zé)在數(shù)據(jù)庫(kù)引擎和客戶應(yīng)用程序之間傳送命令和數(shù)據(jù),它本身并不執(zhí)行數(shù)據(jù)處理操作而用于遠(yuǎn)程操作的網(wǎng)絡(luò)通信協(xié)議的一個(gè)界面。前端應(yīng)用程序提出對(duì)數(shù)據(jù)庫(kù)處理的請(qǐng)求,該請(qǐng)求轉(zhuǎn)給ODBC
驅(qū)動(dòng)程序管理器,驅(qū)動(dòng)程序管理器依據(jù)請(qǐng)求的情況,就地完成或傳給多束驅(qū)動(dòng)程序,多束式驅(qū)動(dòng)程序?qū)⒄?qǐng)求翻譯為特定廠家的數(shù)據(jù)庫(kù)通信接口(如Oracle
的SQLNet)所能理解的形式并交于接口去處理,接口把請(qǐng)求經(jīng)網(wǎng)絡(luò)傳送給服務(wù)器上的數(shù)據(jù)引擎,服務(wù)器處理完后把結(jié)果發(fā)回給數(shù)據(jù)庫(kù)通信接口,數(shù)據(jù)庫(kù)接口將結(jié)果傳給多束式ODBC
驅(qū)動(dòng)程序,再由驅(qū)動(dòng)程序?qū)⒔Y(jié)果傳給應(yīng)用程序。
ODBC(Open Database Connectivity,開放數(shù)據(jù)庫(kù)互連)是微軟公司開放服務(wù)結(jié)構(gòu)(WOSA,Windows Open Services Architecture)中有關(guān)數(shù)據(jù)庫(kù)的一個(gè)組成部分,它建立了一組規(guī)范,并提供了一組對(duì)數(shù)據(jù)庫(kù)訪問(wèn)的標(biāo)準(zhǔn)API(應(yīng)用程序編程接口)。這些API利用SQL來(lái)完成其大部分任務(wù)。ODBC本身也提供了對(duì)SQL語(yǔ)言的支持,用戶可以直接將SQL語(yǔ)句送給ODBC。
一個(gè)基于ODBC的應(yīng)用程序?qū)?shù)據(jù)庫(kù)的操作不依賴任何DBMS,不直接與DBMS打交道,所有的數(shù)據(jù)庫(kù)操作由對(duì)應(yīng)的DBMS的ODBC驅(qū)動(dòng)程序完成。也就是說(shuō),不論是FoxPro、Access還是Oracle數(shù)據(jù)庫(kù),均可用ODBC API進(jìn)行訪問(wèn)。由此可見(jiàn),ODBC的更大優(yōu)點(diǎn)是能以統(tǒng)一的方式處理所有的數(shù)據(jù)庫(kù)。
一個(gè)完整的ODBC由下列幾個(gè)部件組成:
應(yīng)用程序(Application)。
ODBC管理器(Administrator)。該程序位于Windows 95控制面板(Control Panel)的32位ODBC內(nèi),其主要任務(wù)是管理安裝的ODBC驅(qū)動(dòng)程序和管理數(shù)據(jù)源。
驅(qū)動(dòng)程序管理器(Driver Manager)。驅(qū)動(dòng)程序管理器包含在ODBC32.DLL中,對(duì)用戶是透明的。其任務(wù)是管理ODBC驅(qū)動(dòng)程序,是ODBC中最重要的部件。
ODBC API。
ODBC 驅(qū)動(dòng)程序。是一些DLL,提供了ODBC和數(shù)據(jù)庫(kù)之間的接口。
數(shù)據(jù)源。數(shù)據(jù)源包含了數(shù)據(jù)庫(kù)位置和數(shù)據(jù)庫(kù)類型等信息,實(shí)際上是一種數(shù)據(jù)連接的抽象。
各部件之間的關(guān)系如圖下圖所示:
應(yīng)用程序要訪問(wèn)一個(gè)數(shù)據(jù)庫(kù),首先必須用ODBC管理器注冊(cè)一個(gè)數(shù)據(jù)源,管理器根據(jù)數(shù)據(jù)源提供的數(shù)據(jù)庫(kù)位置、數(shù)據(jù)庫(kù)類型及ODBC驅(qū)動(dòng)程序等信息,建立起ODBC與具體數(shù)據(jù)庫(kù)的聯(lián)系。這樣,只要應(yīng)用程序?qū)?shù)據(jù)源名提供給ODBC,ODBC就能建立起與相應(yīng)數(shù)據(jù)庫(kù)的連接。
在ODBC中,ODBC API不能直接訪問(wèn)數(shù)據(jù)庫(kù),必須通過(guò)驅(qū)動(dòng)程序管理器與數(shù)據(jù)庫(kù)交換信息。驅(qū)動(dòng)程序管理器負(fù)責(zé)將應(yīng)用程序?qū)DBC API的調(diào)用傳遞給正確的驅(qū)動(dòng)程序,而驅(qū)動(dòng)程序在執(zhí)行完相應(yīng)的操作后,將結(jié)果通過(guò)驅(qū)動(dòng)程序管理器返回給應(yīng)用程序。
在訪問(wèn)ODBC數(shù)據(jù)源時(shí)需要ODBC驅(qū)動(dòng)程序的支持。用Visual C++ 5.0安裝程序可以安裝SQL Server、 Access、 Paradox、 dBase、 FoxPro、 Excel、 Oracle 和Microsoft Text等驅(qū)動(dòng)程序.在缺省情況下,VC5.0只會(huì)安裝SQL Server、 Access、 FoxPro和dBase的驅(qū)動(dòng)程序.如果用戶需要安裝別的驅(qū)動(dòng)程序,則需要重新運(yùn)行VC 5.0的安裝程序并選擇所需的驅(qū)動(dòng)程序。
關(guān)于odbc提交數(shù)據(jù)庫(kù)的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
四川成都云服務(wù)器租用托管【創(chuàng)新互聯(lián)】提供各地服務(wù)器租用,電信服務(wù)器托管、移動(dòng)服務(wù)器托管、聯(lián)通服務(wù)器托管,云服務(wù)器虛擬主機(jī)租用。成都機(jī)房托管咨詢:13518219792
創(chuàng)新互聯(lián)(www.cdcxhl.com)擁有10多年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)、開啟建站+互聯(lián)網(wǎng)銷售服務(wù),與企業(yè)客戶共同成長(zhǎng),共創(chuàng)價(jià)值。
分享名稱:ODBC連接數(shù)據(jù)庫(kù)的方法及實(shí)踐操作(odbc提交數(shù)據(jù)庫(kù))
鏈接URL:http://www.5511xx.com/article/ccicdoj.html


咨詢
建站咨詢
