C 语言中操作 SQL Server 数据库案例教程
在 C 语言中,可以使用 ODBC API 操作 SQL Server 数据库。本攻略将详细介绍 C 语言中操作 SQL Server 数据库的方法,并提供多个示例说明。
步骤一:安装 ODBC 驱动程序
在 C 语言中操作 SQL Server 数据库,需要安装 ODBC 驱动程序。以下是安装 ODBC 驱动程序的步骤:
-
下载并安装 SQL Server ODBC 驱动程序。
-
在控制面板中打开 ODBC 数据源管理器。
-
在 ODBC 数据源管理器中,添加 SQL Server 数据源。
步骤二:连接数据库
在 C 语言中操作 SQL Server 数据库,需要连接数据库。以下是连接数据库的步骤:
- 使用 SQLAllocHandle 函数分配环境句柄和连接句柄。
SQLHENV henv;
SQLHDBC hdbc;
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
- 使用 SQLConnect 函数连接数据库。
SQLCHAR* server = (SQLCHAR*)"localhost";
SQLCHAR* database = (SQLCHAR*)"mydatabase";
SQLCHAR* username = (SQLCHAR*)"myusername";
SQLCHAR* password = (SQLCHAR*)"mypassword";
SQLRETURN ret = SQLConnect(hdbc, server, SQL_NTS, username, SQL_NTS, password, SQL_NTS);
步骤三:执行 SQL 语句
在 C 语言中操作 SQL Server 数据库,需要执行 SQL 语句。以下是执行 SQL 语句的步骤:
- 使用 SQLAllocHandle 函数分配语句句柄。
SQLHSTMT hstmt;
SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
- 使用 SQLExecDirect 函数执行 SQL 语句。
SQLCHAR* sql = (SQLCHAR*)"SELECT * FROM mytable";
SQLExecDirect(hstmt, sql, SQL_NTS);
- 使用 SQLBindCol 函数绑定结果集列。
SQLCHAR name[256];
SQLINTEGER age;
SQLBindCol(hstmt, 1, SQL_C_CHAR, name, sizeof(name), NULL);
SQLBindCol(hstmt, 2, SQL_C_LONG, &age, 0, NULL);
- 使用 SQLFetch 函数获取结果集行。
while (SQLFetch(hstmt) == SQL_SUCCESS)
{
printf("%s %d\n", name, age);
}
示例说明
以下是两个示例说明:
示例一:连接数据库并查询数据
连接数据库并查询数据可以查询数据库中的数据。以下是一个简单的示例:
#include <stdio.h>
#include <stdlib.h>
#include <sql.h>
#include <sqlext.h>
int main()
{
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;
SQLCHAR* server = (SQLCHAR*)"localhost";
SQLCHAR* database = (SQLCHAR*)"mydatabase";
SQLCHAR* username = (SQLCHAR*)"myusername";
SQLCHAR* password = (SQLCHAR*)"mypassword";
SQLCHAR name[256];
SQLINTEGER age;
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
SQLConnect(hdbc, server, SQL_NTS, username, SQL_NTS, password, SQL_NTS);
SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
SQLCHAR* sql = (SQLCHAR*)"SELECT * FROM mytable";
SQLExecDirect(hstmt, sql, SQL_NTS);
SQLBindCol(hstmt, 1, SQL_C_CHAR, name, sizeof(name), NULL);
SQLBindCol(hstmt, 2, SQL_C_LONG, &age, 0, NULL);
while (SQLFetch(hstmt) == SQL_SUCCESS)
{
printf("%s %d\n", name, age);
}
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 0;
}
以上代码中,连接数据库并查询数据,使用 SQLAllocHandle 函数分配环境句柄和连接句柄,使用 SQLConnect 函数连接数据库,使用 SQLAllocHandle 函数分配语句句柄,使用 SQLExecDirect 函数执行 SQL 语句,使用 SQLBindCol 函数绑定结果集列,使用 SQLFetch 函数获取结果集行。
示例二:插入数据
插入数据可以向数据库中插入数据。以下是一个简单的示例:
#include <stdio.h>
#include <stdlib.h>
#include <sql.h>
#include <sqlext.h>
int main()
{
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;
SQLCHAR* server = (SQLCHAR*)"localhost";
SQLCHAR* database = (SQLCHAR*)"mydatabase";
SQLCHAR* username = (SQLCHAR*)"myusername";
SQLCHAR* password = (SQLCHAR*)"mypassword";
SQLCHAR* name = (SQLCHAR*)"John";
SQLINTEGER age = 30;
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
SQLConnect(hdbc, server, SQL_NTS, username, SQL_NTS, password, SQL_NTS);
SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
SQLCHAR* sql = (SQLCHAR*)"INSERT INTO mytable (name, age) VALUES (?, ?)";
SQLPrepare(hstmt, sql, SQL_NTS);
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 0, 0, name, 0, NULL);
SQLBindParameter(hstmt, 2, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &age, 0, NULL);
SQLExecute(hstmt);
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 0;
}
以上代码中,插入数据,使用 SQLAllocHandle 函数分配环境句柄和连接句柄,使用 SQLConnect 函数连接数据库,使用 SQLAllocHandle 函数分配语句句柄,使用 SQLPrepare 函数准备 SQL 语句,使用 SQLBindParameter 函数绑定参数,使用 SQLExecute 函数执行 SQL 语句。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言中操作sqlserver数据库案例教程 - Python技术站