C语言与SQL Server携手构建数据之路
1. C语言与SQL Server的基本介绍
C语言是一种高级程序设计语言,它被广泛应用于电脑操作系统、应用软件、嵌入式系统以及游戏开发等领域。而SQL Server是由微软公司开发的关系型数据库管理系统,可以运行在windows操作系统上,是一个很重要的软件产品。
关系型数据库是将数据以表格的形式存储,每个表格都有一个唯一的标识符,称为主键,相互之间可以进行链接,这些表格之间的链接关系称为关系,所以称为关系型数据库。
2. C语言与SQL Server的连接方式
2.1 使用ODBC连接
ODBC是微软公司定义的数据访问接口规范,它允许程序采用一种统一的方式访问各种不同的数据库管理系统。
以下是C语言通过ODBC连接SQL Server的过程:
// 1. 包含ODBC头文件
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
// 2. 声明变量
SQLHENV hEnv; // 环境句柄
SQLHDBC hDbc; // 数据库连接句柄
SQLRETURN rc; // 返回状态值
// 3. 初始化环境句柄
rc = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv);
rc = SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, SQL_IS_UINTEGER);
// 4. 获取连接句柄
rc = SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hDbc);
// 5. 连接数据库
SQLCHAR* szConnStr = (SQLCHAR*)"DRIVER={SQL Server};SERVER=localhost;DATABASE=test;UID=sa;PWD=123456";
rc = SQLDriverConnect(hDbc, NULL, szConnStr, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE);
2.2 使用ADO连接
ADO是ActiveX Data Objects的缩写,是微软公布的一部分COM接口,它提供了一种统一的方式,用于访问多种类型的数据源。
以下是C语言通过ADO连接SQL Server的过程:
// 1. 包含ADO头文件
#include <windows.h>
#include <oledb.h>
#include <adoint.h>
// 2. 声明变量
CoInitialize(NULL);
_ConnectionPtr pConn;
_RecordsetPtr pRs;
// 3. 创建连接
pConn.CreateInstance(__uuidof(Connection));
pConn->Provider = "sqloledb";
pConn->ConnectionString = "Data Source=(local);Initial Catalog=pubs;User ID=sa;Password=123456;";
// 4. 打开连接
pConn->Open("", "", "", NULL);
// 5. 执行SQL语句
pRs.CreateInstance(__uuidof(Recordset));
pRs->Open("select * from Authors", pConn.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdText);
3. C语言如何操作SQL Server的表格
在C语言中操作SQL Server的表格,需要用到ODBC或ADO提供的API函数,这些函数封装了SQL语句的各种操作。
以下是C语言操作SQL Server表格的步骤:
连接到SQL Server数据库
创建SQL语句字符串
执行SQL语句
处理返回结果
释放资源
3.1 插入数据
在C语言中向SQL Server的表格中插入数据,需要使用SQL语句中的INSERT INTO语句,如下所示:
// 1. 连接到SQL Server数据库
SQLCHAR* szConnStr = (SQLCHAR*)"DRIVER={SQL Server};SERVER=localhost;DATABASE=test;UID=sa;PWD=123456";
rc = SQLDriverConnect(hDbc, NULL, szConnStr, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE);
// 2. 创建INSERT INTO语句
SQLCHAR* szSqlStr = (SQLCHAR*)"INSERT INTO test(id,name,age) VALUES (1,'Tom',18)";
// 3. 执行SQL语句
rc = SQLExecDirect(hStmt, szSqlStr, SQL_NTS);
3.2 更新数据
在C语言中更新SQL Server的表格中数据,需要使用SQL语句中的UPDATE语句,如下所示:
// 1. 连接到SQL Server数据库
SQLCHAR* szConnStr = (SQLCHAR*)"DRIVER={SQL Server};SERVER=localhost;DATABASE=test;UID=sa;PWD=123456";
rc = SQLDriverConnect(hDbc, NULL, szConnStr, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE);
// 2. 创建UPDATE语句
SQLCHAR* szSqlStr = (SQLCHAR*)"UPDATE test SET age=20 WHERE id=1";
// 3. 执行SQL语句
rc = SQLExecDirect(hStmt, szSqlStr, SQL_NTS);
3.3 删除数据
在C语言中删除SQL Server的表格中数据,需要使用SQL语句中的DELETE语句,如下所示:
// 1. 连接到SQL Server数据库
SQLCHAR* szConnStr = (SQLCHAR*)"DRIVER={SQL Server};SERVER=localhost;DATABASE=test;UID=sa;PWD=123456";
rc = SQLDriverConnect(hDbc, NULL, szConnStr, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE);
// 2. 创建DELETE语句
SQLCHAR* szSqlStr = (SQLCHAR*)"DELETE FROM test WHERE id=1";
// 3. 执行SQL语句
rc = SQLExecDirect(hStmt, szSqlStr, SQL_NTS);
4. C语言如何从SQL Server中读取数据
在C语言中从SQL Server的表格中读取数据,需要使用SQL语句中的SELECT语句,如下所示:
// 1. 连接到SQL Server数据库
SQLCHAR* szConnStr = (SQLCHAR*)"DRIVER={SQL Server};SERVER=localhost;DATABASE=test;UID=sa;PWD=123456";
rc = SQLDriverConnect(hDbc, NULL, szConnStr, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE);
// 2. 创建SELECT语句
SQLCHAR* szSqlStr = (SQLCHAR*)"SELECT * FROM test";
// 3. 执行SQL语句
rc = SQLExecDirect(hStmt, szSqlStr, SQL_NTS);
// 4. 处理返回结果
while (SQLFetch(hStmt) == SQL_SUCCESS) {
SQLGetData(hStmt, 1, SQL_C_LONG, &id, 0, &cb1);
SQLGetData(hStmt, 2, SQL_C_CHAR, szName, 100, &cb2);
SQLGetData(hStmt, 3, SQL_C_LONG, &age, 0, &cb3);
printf("%d\t%s\t%d\n", id, szName, age);
}
5. 总结
本文介绍了C语言与SQL Server搭配使用的基本概念和操作方法,可以帮助读者更好地理解两者之间的关系,并且在实际的开发中,更加方便地进行开发工作。