c语言连接sqlserver数据库查询代码实例

以下链接代码实现了使用C语言连接SQL Server数据库,并执行查询语句,将查询结果输出到控制台的功能。具体的实现过程包括以下几个步骤:

  1. 初始化ODBC环境句柄和连接句柄;
  2. 使用连接字符串连接到SQL Server数据库;
  3. 初始化语句句柄;
  4. 执行查询语句并获取查询结果;
  5. 处理查询结果并输出到控制台;
  6. 释放资源。 该代码的需求是查询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变量存储了查询语句;idname变量分别存储了查询结果中的ID和名称字段;SQLGetData()函数用于获取查询结果中的数据。 需要注意的是,使用SQL Server ODBC驱动程序需要安装ODBC驱动程序和SQL Server Native Client。