以下链接代码实现了使用C语言连接SQL Server数据库,并执行查询语句,将查询结果输出到控制台的功能。具体的实现过程包括以下几个步骤:
- 初始化ODBC环境句柄和连接句柄;
- 使用连接字符串连接到SQL Server数据库;
- 初始化语句句柄;
- 执行查询语句并获取查询结果;
- 处理查询结果并输出到控制台;
- 释放资源。 该代码的需求是查询SQL Server数据库中的一个名为mydatabase的数据库中的mytable表中的所有数据,并将id和name字段的值输出到控制台。
以下是使用C语言连接SQL Server数据库进行查询的示例代码:
#include <stdio.h> #include <stdlib.h> #include <windows.h> #include <sql.h> #include <sqlext.h> int main() { // 定义变量 SQLHANDLE sqlenv = NULL; SQLHANDLE sqlconn = NULL; SQLHANDLE sqlstmt = NULL; SQLRETURN retcode; SQLCHAR *connstr = (SQLCHAR *) "DRIVER={SQL Server};SERVER=localhost;DATABASE=mydatabase;UID=myusername;PWD=mypassword;"; SQLCHAR query[256] = "SELECT * FROM mytable"; SQLCHAR name[256]; SQLINTEGER id; SQLLEN namelen, idlen; // 初始化环境句柄 retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &sqlenv); retcode = SQLSetEnvAttr(sqlenv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER) SQL_OV_ODBC3, 0); // 初始化连接句柄 retcode = SQLAllocHandle(SQL_HANDLE_DBC, sqlenv, &sqlconn); retcode = SQLDriverConnect(sqlconn, NULL, connstr, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE); // 初始化语句句柄 retcode = SQLAllocHandle(SQL_HANDLE_STMT, sqlconn, &sqlstmt); // 执行查询语句 retcode = SQLExecDirect(sqlstmt, query, SQL_NTS); // 处理结果集 while (SQLFetch(sqlstmt) == SQL_SUCCESS) { SQLGetData(sqlstmt, 1, SQL_C_LONG, &id, 0, &idlen); SQLGetData(sqlstmt, 2, SQL_C_CHAR, name, sizeof(name), &namelen); printf("%d\t%s\n", id, name); } // 释放资源 SQLFreeHandle(SQL_HANDLE_STMT, sqlstmt); SQLDisconnect(sqlconn); SQLFreeHandle(SQL_HANDLE_DBC, sqlconn); SQLFreeHandle(SQL_HANDLE_ENV, sqlenv); return 0; }
其中,connstr
变量存储了连接字符串,包括SQL Server的地址、数据库名称、用户名和密码等信息;query
变量存储了查询语句;id
和name
变量分别存储了查询结果中的ID和名称字段;SQLGetData()
函数用于获取查询结果中的数据。 需要注意的是,使用SQL Server ODBC驱动程序需要安装ODBC驱动程序和SQL Server Native Client。
评论