云服务器网:购买云服务器和VPS必上的网站!

借助MSSQL视图实现C语言程序数据库查询

随着Internet技术的发展和现代化信息交互机制的不断完善,现代利用日趋依赖于大范围的数据库系统,因此有必要搜集和管理这些数据。数据库查询是很多利用程序必不可少的组成部份,而当今广泛采取的Microsoft SQL Server(MSSQL)具有诸多的优势,

随着Internet技术的发展和现代化信息交互机制的不断完善,现代利用日趋依赖于大范围的数据库系统,因此有必要搜集和管理这些数据。数据库查询是很多利用程序必不可少的组成部份,而当今广泛采取的Microsoft SQL Server(MSSQL)具有诸多的优势,允许用户以高度可靠的方式对数据库进行查询。

MSSQL使用视图来表示查询,即针对一组表来定义的SELECT查询。这时候候,如果要使用C语言从MSSQL视图中查询数据,需要借助SQL Server Native Client 10.0、SQL Server ODBC Driver 10.0等客户端技术来实现。

首先,安装客户端组件,打开设置窗口,该窗口由两个控件组成:客户端组件(CLR)和ODBC驱动程序。对客户端组件,根据用户具体电脑操作系统类型,系统终究会选择到一个适合的客户端组件版本,具体而言,当设置完成时,客户端组件版本默许为SQL Server Native Client 10.0,其中包括了本地客户端程序利用程序,和客户端组件的C语言库接口库,可以方便C语言程序可以操作和查询MSSQL视图中的数据。

接下来,使用C语言编写一个基于MSSQL视图的数据库查询程序:

#include

#include

#include

#define DB_NAME “my_view” //数据库名

#define DB_USER “sa” //数据库用户名

#define DB_PASSWORD “123456” //数据库密码

#define DB_DRIVER “SQL Server Native Client 10.0” //数据库驱动

//声明句柄变量

SQLHENV henv; //定义环境句柄

SQLHDBC hdbc; //定义连接句柄

SQLHSTMT hstmt; //定义语句句柄

int main()

{

SQLRETURN retcode; //连接结果状态

SQLCHAR connStr[255]; //连接字符串变量

SQLCHAR outstr[1024]; //查询结果字符串

SQLLEN outstrlen; //字符串长度变量

//初始化SQL环境句柄

retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);

//设置ODBC

retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void *)SQL_OV_ODBC3, 0);

//初始化连接句柄

retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);

//组合连接字符串

sprintf_s((char *)connStr,

“DRIVER={%s}; SERVER=.;DATABASE=%s;UID=%s;PWD=%s;”,

DB_DRIVER, DB_NAME, DB_USER, DB_PASSWORD);

//建立连接, 允许用户输入

retcode = SQLDriverConnect(hdbc, NULL, connStr,

sizeof(connStr), outstr,

sizeof(outstr), &outstrlen, SQL_DRIVER_NOPROMPT);

//检查连接状态

if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)

{

printf(“Connect success!\n”);

}

//准备SQL查询语句

char sqlQuery[256];

sprintf_s(sqlQuery,

“SELECT * FROM my_view”);

//语句句柄分配空间

retcode = SQLAllocStmt(hdbc, &hstmt);

//履行查询

retcode = SQLExecDirect(hstmt, (SQLCHAR *)sqlQuery, SQL_NTS);

if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)

{

printf(“Query success!\n”);

//处理查询结果

RETCODE retcode;

//获得查询结果

while ((retcode = SQLFetch(hstmt)) != SQL_NO_DATA)

{

//根据实际字段数,将查询结果放入到变量中

char field1[64];

char field2[64];

int field3;

//获得查询字段的值

SQLLEN ind1, ind2, ind3;

SQLBindCol(hstmt, 1, SQL_C_CHAR, (SQLPOINTER)field1,

sizeof(field1), &ind1);

SQLBindCol(hstmt, 0, SQL_C_CHAR, (SQLPOINTER)field2,

sizeof(field2), &ind2);

SQLBindCol(hstmt, 2, SQL_C_SLONG, (SQLPOINTER)&field3,

本文来源:https://www.yuntue.com/post/103631.html | 云服务器网,转载请注明出处!

关于作者: yuntue

云服务器(www.yuntue.com)是一家专门做阿里云服务器代金券、腾讯云服务器优惠券的网站,这里你可以找到阿里云服务器腾讯云服务器等国内主流云服务器优惠价格,以及海外云服务器、vps主机等优惠信息,我们会为你提供性价比最高的云服务器和域名、数据库、CDN、免费邮箱等企业常用互联网资源。

为您推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注