C ODBC(Open Database Connectivity)是一种接口规范,用于访问数据库。它与Oracle数据库进行连接时,需要使用ODBC Driver for Oracle。ODBC Driver for Oracle提供了一个简单的、容易使用的界面,允许C程序通过ODBC操作Oracle数据库。
ODBC Driver for Oracle按照以下步骤连接Oracle数据库:
1. 建立一个ODBC版的数据源(DSN) 2. 使用SQLDriverConnect函数来连到数据库服务器上
在建立ODBC版的数据源时,需要指定以下信息:
1. 服务器名:Oracle所在的服务器名称 2. 数据库名:Oracle所在的数据库名称 3. 用户名:连接数据库所用的用户名 4. 密码:连接数据库所用的密码
下面的代码演示了如何通过C ODBC连接Oracle数据库:
#include#include #include #include #include int main() { SQLHENV env; SQLHDBC dbc; SQLRETURN ret;//返回值 SQLWCHAR OutConnStr[1024];//保存连接字符串 SQLSMALLINT OutConnStrLen; SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env); SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0); SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc); SQLCHAR* dsnName = (SQLCHAR*)"Oracle";//数据源名称,这里是Oracle SQLCHAR* serverName = (SQLCHAR*)"192.168.0.1";//连接服务器IP地址 SQLCHAR* userName = (SQLCHAR*)"user1";//数据库用户名 SQLCHAR* password = (SQLCHAR*)"pwd1";//数据库密码 ret = SQLConnectA(dbc, (SQLCHAR*)dsnName, SQL_NTS, (SQLCHAR*)userName, SQL_NTS, (SQLCHAR*)password, SQL_NTS); if (SQL_SUCCESS != ret && SQL_SUCCESS_WITH_INFO != ret) { SQLSMALLINT errorNum = 1; SQLCHAR message[1024]; SQLGetDiagRec(SQL_HANDLE_DBC, dbc, errorNum, NULL, NULL, message, sizeof(message), NULL); printf("Connect Error:%s\n", message); } else { printf("Connect OK\n"); SQLDisconnect(dbc);//断开连接 } SQLFreeHandle(SQL_HANDLE_DBC, dbc); SQLFreeHandle(SQL_HANDLE_ENV, env); return 0; }
以上代码使用ODBC Driver for Oracle连接Oracle服务器。如果连接成功,则会输出"Connect OK"。如果连接失败,则会输出出错信息。下面是一个类似的错误信息:
[Oracle][ODBC][Ora]ORA-01017: invalid username/password; logon denied
以上就是C ODBC连接Oracle的过程,开发者可以根据需要设置更多的选项,如连接字符集、连接超时等。总的来说,C ODBC提供的API合理、简单,可以帮助开发者通过C代码访问和管理Oracle数据库。