如何将Microsoft SQL Server 7连接到MFC Microsoft Visual C ++ 6.0?

如何将Microsoft SQL Server 7连接到MFC Microsoft Visual C ++ 6.0?

问题描述:

如何将Microsoft SQL Server 7连接到MFC Microsoft Visual C ++ 6.0?

我可以在单个源文件(.cpp)中完成它,其代码为:

How to Connect Microsoft SQL Server 7 to MFC Microsoft Visual C++ 6.0 ?

I can do it in a single source file(.cpp), its my code:

#include <iostream>
#include <windows.h>
#include <sqltypes.h>
#include <sql.h>
#include <sqlext.h>
 
using namespace std;

void show_error(unsigned int handletype, const SQLHANDLE& handle){
     SQLCHAR sqlstate[1024];
     SQLCHAR message[1024];
     if(SQL_SUCCESS == SQLGetDiagRec(handletype, handle, 1, sqlstate, NULL, message, 1024, NULL))
         cout<<"Message: "<<message<<"\nSQLSTATE: "<<sqlstate<<endl;
 }

 int main(){
 
     SQLHANDLE sqlenvhandle;    
     SQLHANDLE sqlconnectionhandle;
    SQLHANDLE sqlstatementhandle;
     SQLRETURN retcode;

    if(SQL_SUCCESS!=SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &sqlenvhandle))
        goto FINISHED;
 
     if(SQL_SUCCESS!=SQLSetEnvAttr(sqlenvhandle,SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0)) 
         goto FINISHED;
     
     if(SQL_SUCCESS!=SQLAllocHandle(SQL_HANDLE_DBC, sqlenvhandle, &sqlconnectionhandle))
         goto FINISHED;
 
     SQLCHAR retconstring[1024];
     switch(SQLDriverConnect (sqlconnectionhandle, 
                 NULL, 
                 (SQLCHAR*)"DRIVER={SQL Server};SERVER=192.168.4.250, 1433;DATABASE=TEST;UID=jm;PWD=1017;", 
                 SQL_NTS, 
                 retconstring, 
                 1024, 
                 NULL,
                SQL_DRIVER_NOPROMPT)){
         case SQL_SUCCESS_WITH_INFO:
             show_error(SQL_HANDLE_DBC, sqlconnectionhandle);
            break;
         case SQL_INVALID_HANDLE:
         case SQL_ERROR:
             show_error(SQL_HANDLE_DBC, sqlconnectionhandle);
			 return 0;
            goto FINISHED;
         default:
             break;
     }
     
     if(SQL_SUCCESS!=SQLAllocHandle(SQL_HANDLE_STMT, sqlconnectionhandle, &sqlstatementhandle))
         goto FINISHED;
 
     if(SQL_SUCCESS!=SQLExecDirect(sqlstatementhandle, (SQLCHAR*)"select * from affectedhardware", SQL_NTS)){
         show_error(SQL_HANDLE_STMT, sqlstatementhandle);
         goto FINISHED;
     }
     else{
         char name[64];
         char address[64];
         int id;
         while(SQLFetch(sqlstatementhandle)==SQL_SUCCESS){
             SQLGetData(sqlstatementhandle, 1, SQL_C_ULONG, &id, 0, NULL);
             SQLGetData(sqlstatementhandle, 2, SQL_C_CHAR, name, 64, NULL);
             //SQLGetData(sqlstatementhandle, 4, SQL_C_CHAR, address, 64, NULL);
             cout<<id<<" "<<name<<" "<<endl;
         }
     }
 
 FINISHED:
     SQLFreeHandle(SQL_HANDLE_STMT, sqlstatementhandle );
     SQLDisconnect(sqlconnectionhandle);
     SQLFreeHandle(SQL_HANDLE_DBC, sqlconnectionhandle);
     SQLFreeHandle(SQL_HANDLE_ENV, sqlenvhandle);
     return 0;
 }


---->但我不能在MFC中做到这一点:(


有人可以帮助我吗?


----> but i cant do that in MFC :(


anyone who can help me?

好吧,我将C ++控制台应用程序的库模块复制到我的c ++ mfc应用程序中来进行修复.
Ok I fix it by copying the library modules of c++ console application to my c++ mfc application.