BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / database / #9521同步于 2015/4/26
Database机器人发帖

C语言连接OBDC为什么SQLFetch返回值是Error?

zyq414
2015/4/26镜像同步0 回复
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; }
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。