📅  最后修改于: 2023-12-03 15:18:05.700000             🧑  作者: Mango
ODBC是一种开放式数据库连接技术,支持跨平台数据库连接,提供了一套标准的API接口,方便开发人员通过这些接口来访问不同的数据库。
当使用ODBC来连接数据库时,需要指定一些参数来描述数据库的位置和连接属性。这些参数可以在ODBC数据源中配置,也可以在程序中指定。以下是一些常用的连接参数:
ODBC API是一组标准的C语言函数,用于访问ODBC数据源。以下是一些常用的ODBC函数:
下面是一个使用ODBC连接MySQL数据库的示例代码:
#include <stdio.h>
#include <sql.h>
#include <sqlext.h>
int main()
{
// 分配ODBC环境句柄
SQLHENV env;
SQLAllocHandle(SQL_HANDLE_ENV, NULL, &env);
SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
// 分配ODBC连接句柄
SQLHDBC dbc;
SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);
// 连接到MySQL数据库
SQLCHAR* driver = (SQLCHAR*)"MySQL ODBC 8.0 ANSI Driver";
SQLCHAR* server = (SQLCHAR*)"localhost";
SQLCHAR* database = (SQLCHAR*)"test";
SQLCHAR* uid = (SQLCHAR*)"root";
SQLCHAR* pwd = (SQLCHAR*)"123456";
SQLCHAR conn_str[1024];
SQLSMALLINT conn_str_len;
SQLRETURN ret;
sprintf(conn_str, "DRIVER=%s;SERVER=%s;DATABASE=%s;UID=%s;PWD=%s;", driver, server, database, uid, pwd);
conn_str_len = (SQLSMALLINT)strlen(conn_str);
ret = SQLDriverConnect(dbc, NULL, conn_str, conn_str_len, NULL, 0, NULL, SQL_DRIVER_COMPLETE);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
{
printf("Failed to connect to MySQL database.\n");
return 1;
}
// 查询数据
SQLHSTMT stmt;
SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);
SQLCHAR* sql = (SQLCHAR*)"SELECT * FROM users";
ret = SQLExecDirect(stmt, sql, SQL_NTS);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
{
printf("Failed to execute SQL statement.\n");
return 1;
}
int id;
SQLCHAR name[256];
while (SQLFetch(stmt) == SQL_SUCCESS)
{
SQLGetData(stmt, 1, SQL_C_LONG, &id, 0, NULL);
SQLGetData(stmt, 2, SQL_C_CHAR, name, sizeof(name), NULL);
printf("id=%d, name=%s\n", id, name);
}
// 断开连接
SQLFreeHandle(SQL_HANDLE_STMT, stmt);
SQLDisconnect(dbc);
SQLFreeHandle(SQL_HANDLE_DBC, dbc);
SQLFreeHandle(SQL_HANDLE_ENV, env);
return 0;
}