Microsoft Access 是一个关系型数据库管理系统(RDBMS),它允许用户创建和管理数据库。C 语言是一种通用的编程语言,可以通过 ODBC(Open Database Connectivity)或 DAO(Data Access Objects)来连接和操作 Access 数据库。
以下是一个简单的示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <sql.h>
#include <sqlext.h>
void checkSqlError(SQLRETURN ret, SQLSMALLINT handleType, SQLHANDLE handle, const char *msg) {
if (ret != SQL_SUCCESS) {
SQLCHAR sqlState[6], sqlMessage[SQL_MAX_MESSAGE_LENGTH];
SQLINTEGER nativeError;
SQLSMALLINT textLength;
SQLGetDiagRec(handleType, handle, 1, sqlState, &nativeError, sqlMessage, sizeof(sqlMessage), &textLength);
fprintf(stderr, "%s: %s\n", msg, sqlMessage);
}
}
int main() {
SQLHENV env;
SQLHDBC dbc;
SQLHSTMT stmt;
SQLRETURN ret;
// Allocate environment handle
ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
checkSqlError(ret, SQL_HANDLE_ENV, env, "Failed to allocate environment handle");
// Set the ODBC version environment attribute
ret = SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
checkSqlError(ret, SQL_HANDLE_ENV, env, "Failed to set ODBC version");
// Allocate connection handle
ret = SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);
checkSqlError(ret, SQL_HANDLE_DBC, dbc, "Failed to allocate connection handle");
// Connect to the database
ret = SQLConnect(dbc, (SQLCHAR*)"YourDSN", SQL_NTS, (SQLCHAR*)"YourUsername", SQL_NTS, (SQLCHAR*)"YourPassword", SQL_NTS);
checkSqlError(ret, SQL_HANDLE_DBC, dbc, "Failed to connect to database");
if (ret == SQL_SUCCESS) {
printf("Connected to Access database successfully!\n");
// Allocate statement handle
ret = SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);
checkSqlError(ret, SQL_HANDLE_STMT, stmt, "Failed to allocate statement handle");
// Execute a query
ret = SQLExecDirect(stmt, (SQLCHAR*)"SELECT * FROM YourTable", SQL_NTS);
checkSqlError(ret, SQL_HANDLE_STMT, stmt, "Failed to execute query");
if (ret == SQL_SUCCESS) {
SQLCHAR column1[256], column2[256];
while (SQLFetch(stmt) == SQL_SUCCESS) {
SQLGetData(stmt, 1, SQL_C_CHAR, column1, sizeof(column1), NULL);
SQLGetData(stmt, 2, SQL_C_CHAR, column2, sizeof(column2), NULL);
printf("Column1: %s, Column2: %s\n", column1, column2);
}
}
// Free statement handle
SQLFreeHandle(SQL_HANDLE_STMT, stmt);
}
// Disconnect and free connection handle
SQLDisconnect(dbc);
SQLFreeHandle(SQL_HANDLE_DBC, dbc);
// Free environment handle
SQLFreeHandle(SQL_HANDLE_ENV, env);
return 0;
}
SQLGetDiagRec
函数获取详细的错误信息。SQLFreeHandle
释放资源。通过以上步骤和示例代码,你应该能够成功连接并操作 Access 数据库。如果遇到具体问题,请根据错误信息进行排查和解决。
“中小企业”在线学堂
Techo Youth 2022学年高校公开课
DBTalk
Techo Youth高校公开课
serverless days
高校公开课
高校公开课
云+社区沙龙online [国产数据库]
云+社区沙龙online [国产数据库]
云+社区沙龙online [国产数据库]
领取专属 10元无门槛券
手把手带您无忧上云