C语言如何连接SQL数据库并实现查询 (c 连接sql数据库并查询)
随着信息化进程的推广,数据库系统成为了信息管理的必备工具之一,对于程序员而言,了解和掌握如何连接数据库,实现数据的增删改查也变得越来越重要。本文将从以下三个方面介绍。
一、连接SQL数据库
1.1 下载所需的库文件
要想使用C语言操作数据库,需要下载相应的库文件。目前使用较多的SQL Server数据库可以下载ODBC驱动程序。
1.2 引入库文件
在C语言程序中引入下载并安装好的ODBC库文件头文件和库文件,如下所示:
#include
#include
#include
#include
#include
#include
其中,包含了ODBC的头文件sql.h,sqlext.h和Windows.h。
1.3 初始化数据库连接
在程序中创建句柄,用于连接数据库,并初始化环境变量。如下所示:
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;
SQLCHAR *connStr = “DRIVER={SQL Server}; SERVER=localhost; UID=sa; PWD=sa123456; DATABASE=db_name”;
SQLRETURN ret;
ret = SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv);
ret = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC3, 0);
ret = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
ret = SQLDriverConnect(hdbc, NULL, (SQLCHAR *) connStr, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE);
其中,SQL_RETURN是ODBC中的一种返回类型,表示函数执行成功与否;connStr是连接字符串,包括连接的数据库名、用户名和密码等信息。
二、执行查询
2.1 编写SQL语句
在C语言程序中编写需要执行的SQL语句。例如,下面的代码查询了员工表中所有的员工信息:
char *sql = “SELECT * FROM employee”;
2.2 设置环境变量
在程序中使用句柄获取需要执行的SQL语句,设置执行环境变量。如下所示:
ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
ret = SQLExecDirect(hstmt, (SQLCHAR *) sql, SQL_NTS);
其中,SQL_HANDLE_STMT表示语句句柄类型,hstmt表示语句句柄,SQLExecDirect函数执行SQL语句。
2.3 获取查询结果
在程序中获取查询结果,使用fetch函数获取一条记录,如下所示:
while ((ret = SQLFetch(hstmt)) == SQL_SUCCESS) {
int id, age;
char name[20];
SQLGetData(hstmt, 1, SQL_C_LONG, &id, 0, NULL);
SQLGetData(hstmt, 2, SQL_C_CHAR, name, sizeof(name), NULL);
SQLGetData(hstmt, 3, SQL_C_LONG, &age, 0, NULL);
printf(“id = %d, name = %s, age = %d\n”, id, name, age);
}
其中,SQL_C_LONG和SQL_C_CHAR是ODBC中的数据类型,表示整型和字符型,具体可参考ODBC开发文档。
三、断开连接
在程序完毕之后,需要关闭数据库连接,如下所示:
ret = SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
ret = SQLDisconnect(hdbc);
ret = SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
ret = SQLFreeHandle(SQL_HANDLE_ENV, henv);
其中,SQLFreeHandle函数用于释放使用完毕的句柄资源。