返回信息流RT,代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
#include"sql.h"
#include"sqlext.h"
#include"sqltypes.h"
#define Name_Len 20
#define Id_Len 10
#define Sex_Len 1
#define Birth_Len 30
#define Classid_Len 10
#define Entrance_Len 30
#define Homeaddr_Len 100
SQLCHAR Name[Name_Len];
SQLCHAR Id[Id_Len];
SQLINTEGER Sex[Sex_Len];
SQLCHAR Birth[Birth_Len];
SQLCHAR Class_id[Classid_Len];
SQLCHAR Entrance[Entrance_Len];
SQLCHAR Homeaddr[Homeaddr_Len];
SQLINTEGER student_id=SQL_NTS,student_name=SQL_NTS,sex=0,birth=SQL_NTS,class_id=SQL_NTS,entrance_date=SQL_NTS,home_addr=SQL_NTS;
SQLHENV henv = SQL_NULL_HENV;
SQLHDBC hdbc1 = SQL_NULL_HDBC;
SQLHSTMT hstmt1 = SQL_NULL_HSTMT;
main()
{
SQLRETURN ret;
ret=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&henv);
ret=SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0);
if(ret==SQL_SUCCESS)
{
printf("-------------------------\n");
printf("环境分配成功\n");
printf("-------------------------\n");
}
//建立连接
ret = SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc1);
//ret=SQLConnectW(hdbc1,(SQLWCHAR *)"student",SQL_NTS,(SQLWCHAR*)"sa",SQL_NTS,(SQLWCHAR*)"123456",SQL_NTS);
ret = SQLConnect(hdbc1,(SQLCHAR*)"student",SQL_NTS,(SQLCHAR*)"sa",SQL_NTS,(SQLCHAR*)"123456",SQL_NTS);
if(!SQL_SUCCEEDED(ret))
{
printf("-------------------------\n");
printf("数据连接失败!\n");
printf("-------------------------\n");
return -1;
}
else
{
printf("-------------------------\n");
printf("数据连接成功!\n");
printf("-------------------------\n");
Sleep(2000);
//判断是否连接成功
ret = SQLAllocHandle(SQL_HANDLE_STMT,hdbc1,&hstmt1);
ret = SQLExecDirect(hstmt1,(SQLCHAR*)"select * from student",SQL_NTS);
if(ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)
{
//处理结果集
ret = SQLBindCol(hstmt1,1,SQL_C_CHAR,Id,Id_Len,&student_id);
ret = SQLBindCol(hstmt1,2,SQL_C_CHAR,Name,Name_Len,&student_name);
ret = SQLBindCol(hstmt1,3,SQL_C_CHAR,Sex,Sex_Len,&sex);
ret = SQLBindCol(hstmt1,4,SQL_C_CHAR,Birth,Birth_Len,&birth);
ret = SQLBindCol(hstmt1,5,SQL_C_CHAR,Class_id,Classid_Len,&class_id);
ret = SQLBindCol(hstmt1,6,SQL_C_CHAR,Entrance,Entrance_Len,&entrance_date);
ret = SQLBindCol(hstmt1,7,SQL_C_CHAR,Homeaddr,Homeaddr_Len,&home_addr);
}
printf("student_id\t student_name\t sex\t birth\t class_id\t entrance_data\t home_addr\t\n");
ret = SQLFetch(hstmt1); //为什么返回值是ERROR?
while(ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)
{
printf("%s\t %s\t %s\t %s\t %s\t %s\t\n",Id,Name,Sex,Birth,Class_id,Entrance,Homeaddr);
ret = SQLFetch(hstmt1);
}
}
SQLFreeHandle(SQL_HANDLE_STMT, hstmt1);
SQLDisconnect(hdbc1);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc1);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 0;
}
这是一条镜像帖。来源:北邮人论坛 / database / #9521同步于 2015/4/26
Database机器人发帖
C语言连接OBDC为什么SQLFetch返回值是Error?
zyq414
2015/4/26镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。