如何在C语言文件中执行sql语句
时间: 2024-03-12 08:44:57 浏览: 138
C语言连接SQL数据库.doc
要在C语言文件中执行SQL语句,你需要使用数据库连接库和SQL语句执行库,比如ODBC、JDBC、MySQL Connector/C等库。这些库可以通过API或函数来连接数据库、执行SQL语句和获取执行结果。
下面是一个使用ODBC库来执行SQL查询语句的示例代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <sql.h>
#include <sqlext.h>
void show_error(unsigned int handle_type, const SQLHANDLE& handle)
{
SQLCHAR sqlstate[1024];
SQLCHAR message[1024];
if (SQL_SUCCESS == SQLGetDiagRec(handle_type, handle, 1, sqlstate, NULL, message, 1024, NULL))
{
printf("Message: %s\n", message);
printf("SQLSTATE: %s\n", sqlstate);
}
}
int main()
{
SQLHENV env;
SQLHDBC dbc;
SQLHSTMT stmt;
SQLRETURN ret; /* ODBC API return status */
/* Allocate an environment handle */
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
/* We want ODBC 3 support */
SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
/* Allocate a connection handle */
SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);
/* Connect to the DSN */
ret = SQLDriverConnect(dbc, NULL, (SQLCHAR*)"DSN=mydsn;", SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE);
if (SQL_SUCCESS != ret) {
show_error(SQL_HANDLE_DBC, dbc);
return EXIT_FAILURE;
}
/* Allocate a statement handle */
SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);
/* Execute the query */
ret = SQLExecDirect(stmt, (SQLCHAR*)"SELECT * FROM mytable", SQL_NTS);
if (SQL_SUCCESS != ret) {
show_error(SQL_HANDLE_STMT, stmt);
return EXIT_FAILURE;
}
/* Fetch and display the result set */
while (SQLFetch(stmt) == SQL_SUCCESS) {
SQLINTEGER id;
SQLCHAR name[256];
SQLGetData(stmt, 1, SQL_C_SLONG, &id, 0, NULL);
SQLGetData(stmt, 2, SQL_C_CHAR, name, 256, NULL);
printf("%d %s\n", id, name);
}
/* Free up the handles */
SQLFreeHandle(SQL_HANDLE_STMT, stmt);
SQLDisconnect(dbc);
SQLFreeHandle(SQL_HANDLE_DBC, dbc);
SQLFreeHandle(SQL_HANDLE_ENV, env);
return EXIT_SUCCESS;
}
```
这个示例代码使用ODBC库连接数据库,并执行一个简单的SELECT查询语句,然后获取查询结果并输出。在执行SQL语句之前,需要先连接到数据库,并分配环境句柄、连接句柄和语句句柄。然后,使用SQLExecDirect函数执行SQL语句,再使用SQLGetData函数获取结果。最后,释放句柄并关闭连接。
阅读全文