C语言连接数据库

#include <stdio.h>      知网
#include <string.h>     
#include <windows.h>     
#include <sql.h>     
#include <sqlext.h>     
#include <sqltypes.h>     
#include <odbcss.h>     
SQLHENV henv = SQL_NULL_HENV;     
SQLHDBC hdbc1 = SQL_NULL_HDBC;     
SQLHSTMT hstmt1 = SQL_NULL_HSTMT;     
/* 
查询SQLSERVER数据库,1.条件查询,2.直接查询全部 
*/ 
int main(){     
RETCODE retcode;     
UCHAR  szDSN[SQL_MAX_DSN_LENGTH+1]  =  "csql",     
szUID[MAXNAME]  =  "sa",     
szAuthStr[MAXNAME]  =  "";   
UCHAR  sql1[39] = "select b from test where a = 'aaa'"; 
UCHAR  sql2[35] = "select b from test where a = ? "; 
UCHAR  sql3[19] = "select b from test"; 
retcode  =  SQLAllocHandle  (SQL_HANDLE_ENV,  NULL,  &henv);     
retcode  =  SQLSetEnvAttr(henv,  SQL_ATTR_ODBC_VERSION,     
(SQLPOINTER)SQL_OV_ODBC3,     
SQL_IS_INTEGER);     
retcode  =  SQLAllocHandle(SQL_HANDLE_DBC,  henv,  &hdbc1);     
//1.连接数据源 
retcode  =  SQLConnect(hdbc1,  szDSN,  4,  szUID,  2,  szAuthStr,  0);     
if  (  (retcode  !=  SQL_SUCCESS)  &&  (retcode  !=  SQL_SUCCESS_WITH_INFO)  )  {     
printf("连接失败!"); 
}  else  {     
//2.创建并执行一条或多条SQL语句 
/* 
1.分配一个语句句柄(statement handle) 
2.创建SQL语句 
3.执行语句 
4.销毁语句 
*/ 
retcode  =  SQLAllocHandle(SQL_HANDLE_STMT,  hdbc1,  &hstmt1);     
//第一种方式 
/* 
//直接执行 
SQLExecDirect (hstmt1,sql1,39); 
char list[5]; 
SQLBindCol(hstmt1, 1, SQL_C_CHAR, list, 5, 0); 
SQLFetch(hstmt1); 
printf("%s\n",list); 
*/ 
//第二种方式 
/* 
//绑定参数方式 
char a[200]="aaa"; 
SQLINTEGER  p  =  SQL_NTS; 
//1.预编译 
SQLPrepare(hstmt1,sql2,35); //第三个参数与数组大小相同,而不是数据库列相同 
/
/2.绑定参数值 
SQLBindParameter(hstmt1,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,200,0,&a,0,&p); 
//3.执行 
SQLExecute(hstmt1); 
char list[5]; 
SQLBindCol(hstmt1, 1, SQL_C_CHAR, list, 5, 0); 
中共二大SQLFetch(hstmt1); 
printf("%s\n",list); 
幸福双响炮
*/ 
//第三种方式全部输出 
/* 
1.确认一个结果集是否可用。 
2.将结果集的列绑定在适当的变量上。 
3.取得行 
*/ 
//3.检查结果记录(如果有的话) 
SQLExecDirect (hstmt1,sql3,19); 
char list[5]; 
SQLBindCol(hstmt1, 1, SQL_C_CHAR, list, 5, 0); 
do{ 
retcode
= SQLFetch(hstmt1); 
if(retcode == SQL_NO_DATA){ 
break; 
printf("%s\n",list); 
}while(1); 
//释放语句句柄 
SQLCloseCursor (hstmt1); 
SQLFreeHandle (SQL_HANDLE_STMT, hstmt1); 
}     
潘恩思
//4.断开数据源 
/* 
1.断开与数据源的连接. 
库伦效率2.释放连接句柄. 
3.释放环境句柄 (如果不再需要在这个环境中作更多连接) 
*/ 
SQLDisconnect(hdbc1);      撬动战略
SQLFreeHandle(SQL_HANDLE_DBC, hdbc1);     
SQLFreeHandle(SQL_HANDLE_ENV, henv);     
return(0);     
}

本文发布于:2024-09-21 00:31:50,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/571461.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:BDE错误代码
标签:结果   连接   绑定   语句   句柄   查询
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议