跟着信息技巧的开展,C言语因其高效跟可移植性在很多范畴掉掉落了广泛利用。SQL Server作为一款风行的关联型数据库管理体系,供给了丰富的功能跟接口。本文将具体介绍怎样将C言语与SQL Server相结合,实现高效编程。
在利用C言语连接SQL Server之前,确保曾经安装了ODBC驱动顺序。在Windows操纵体系中,可能经由过程以下步调安装:
#include <sql.h>
#include <sqlext.h>
SQLHENV henv = SQL_NULL_HENV;
SQLHDBC hdbc = SQL_NULL_HDBC;
SQLRETURN ret;
ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)
ret = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)
ret = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
SQLCHAR outstr[255];
SQLSMALLINT outstrlen;
ret = SQLDriverConnect(hdbc, NULL, "DSN=数据源称号;", SQL_NTS, outstr, sizeof(outstr), &outstrlen, SQL_DRIVER_COMPLETE);
SQLINTEGER connect_status;
ret = SQLConnect(hdbc, "效劳器称号", SQL_NTS, "登录名", SQL_NTS, "密码", SQL_NTS);
if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)
connect_status = 1;
else
connect_status = 0;
SQLHSTMT hstmt;
SQLINTEGER affected_rows;
ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
ret = SQLPrepare(hstmt, (SQLCHAR*)"SELECT * FROM 表名", SQL_NTS);
ret = SQLExecute(hstmt);
if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)
ret = SQLFetch(hstmt);
if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)
affected_rows = 1;
SQLINTEGER i, col_count;
SQLINTEGER column_type;
SQLINTEGER column_size;
SQLINTEGER column_decimal_digits;
SQLINTEGER row[100];
ret = SQLNumResultCols(hstmt, &col_count);
for (i = 1; i <= col_count; i++)
{
ret = SQLDescribeCol(hstmt, i, &column_type, &column_size, &column_decimal_digits, NULL, NULL, NULL);
ret = SQLBindCol(hstmt, i, SQL_C_LONG, &row[i], sizeof(row[i]), NULL);
}
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
经由过程以上步调,你可能轻松地将C言语与SQL Server相结合,实现高效编程。在现实开辟过程中,根据须要调剂代码,进步开辟效力跟顺序机能。