c连接access数据库
时间: 2023-12-16 15:58:36 浏览: 27
你可以使用ODBC(Open Database Connectivity)API来连接Access数据库。下面是一个连接Access数据库的C代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#define MAX_COL_LEN 255
int main()
{
SQLHENV env;
SQLHDBC dbc;
SQLHSTMT stmt;
SQLRETURN ret;
SQLCHAR col1[MAX_COL_LEN], col2[MAX_COL_LEN];
// Allocate environment handle
ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
printf("SQLAllocHandle error\n");
return -1;
}
// Set the ODBC version
ret = SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
printf("SQLSetEnvAttr error\n");
SQLFreeHandle(SQL_HANDLE_ENV, env);
return -1;
}
// Allocate connection handle
ret = SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
printf("SQLAllocHandle error\n");
SQLFreeHandle(SQL_HANDLE_ENV, env);
return -1;
}
// Connect to the database
ret = SQLConnect(dbc, (SQLCHAR*)"YOUR_DSN_NAME", SQL_NTS, NULL, 0, NULL, 0);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
printf("SQLConnect error\n");
SQLFreeHandle(SQL_HANDLE_DBC, dbc);
SQLFreeHandle(SQL_HANDLE_ENV, env);
return -1;
}
// Allocate statement handle
ret = SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
printf("SQLAllocHandle error\n");
SQLDisconnect(dbc);
SQLFreeHandle(SQL_HANDLE_DBC, dbc);
SQLFreeHandle(SQL_HANDLE_ENV, env);
return -1;
}
// Execute a SQL query
ret = SQLExecDirect(stmt, (SQLCHAR*)"SELECT * FROM YOUR_TABLE_NAME", SQL_NTS);
if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO) {
printf("SQLExecDirect error\n");
SQLFreeHandle(SQL_HANDLE_STMT, stmt);
SQLDisconnect(dbc);
SQLFreeHandle(SQL_HANDLE_DBC, dbc);
SQLFreeHandle(SQL_HANDLE_ENV, env);
return -1;
}
// Fetch the result set
while (SQLFetch(stmt) == SQL_SUCCESS) {
SQLGetData(stmt, 1, SQL_C_CHAR, col1, MAX_COL_LEN, NULL);
SQLGetData(stmt, 2, SQL_C_CHAR, col2, MAX_COL_LEN, NULL);
printf("%s %s\n", col1, col2);
}
// Free statement handle
SQLFreeHandle(SQL_HANDLE_STMT, stmt);
// Disconnect from the database
SQLDisconnect(dbc);
// Free connection handle
SQLFreeHandle(SQL_HANDLE_DBC, dbc);
// Free environment handle
SQLFreeHandle(SQL_HANDLE_ENV, env);
return 0;
}
```
其中,YOUR_DSN_NAME 是你在ODBC数据源管理器中配置的数据源名称,YOUR_TABLE_NAME 是你要查询的表的名称。