zoukankan      html  css  js  c++  java
  • C/C++ Connect SQLSERVER

    {

    #include <icrsint.h>
    #include <windows.h>  
    #include <sqltypes.h>  
    #include <sql.h>  
    #include <sqlext.h>
    //方式一
    #pragma comment(lib,"odbc32.lib")
    //方式二
    //#import "c:program filescommon filessystemadomsado15.dll"  no_namespace rename("EOF", "adoEOF")

    //方式一:ODBC////////////////////华丽的分割线/////////////////////////////////////
    SQLHENV env;        //environment handle  
    SQLHDBC dbc;        //connection handle  
    SQLHSTMT stmt;      //state handle  
    SQLRETURN ret;      //result return  
     
    //查询的结果返回到这些变量里  
    SQLCHAR sno[64];  
    SQLINTEGER grade;  
    SQLINTEGER cbSno , cbGrade ;

    //环境句柄
    ret = SQLAllocHandle(SQL_HANDLE_ENV, NULL, &env);     
    ret = SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);
    ret = SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);
    char c[512];
    sprintf_s(c,"DRIVER={SQL Server};SERVER=192.168.1.29;DATABASE=baoshang;UID=sa;PWD=ebank@123;");

    SQLCHAR outstr[1024];
    SQLSMALLINT outstrlen;
    ret = SQLDriverConnect(dbc, NULL, (SQLCHAR *)c, SQL_NTS, outstr, sizeof(outstr), &outstrlen, SQL_DRIVER_NOPROMPT);

    int intTemp = SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);  
    if (SQL_SUCCESS != SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt))  
    {  
    AfxMessageBox("Failed to connect");
    }  
    else  
    {  
    // 基本上每个SQLExecDirect()都要初始化句柄 
    ret = SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);  
    ret = SQLSetStmtAttr(stmt, SQL_ATTR_ROW_BIND_TYPE, (SQLPOINTER)SQL_BIND_BY_COLUMN, SQL_IS_INTEGER);  

    //查询  
    ret = SQLExecDirect(stmt, (SQLCHAR *)("SELECT * FROM dbo.TB_DICT_CONTTYPE"), SQL_NTS);  
    if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)  
    {  
    /*  句柄、列、变量类型、接收缓冲、缓冲长度、返回的长度   */  
    ret = SQLBindCol(stmt, 1, SQL_C_LONG, &grade, 0, &cbGrade);  
    //ret = SQLBindCol(stmt, 2, SQL_C_CHAR, cno, CNO_LEN, &cbCno);  
    ret = SQLBindCol(stmt, 3, SQL_C_CHAR, sno, 64, &cbSno);  
    }  
    //遍历数据  
    while ((ret = SQLFetch(stmt)) != SQL_NO_DATA_FOUND)  
    {  
    if (ret == SQL_ERROR)   printf("fetch error ");  
    else  
    {  
    char szS[128];
    sprintf_s(szS,"%d:%s",grade,sno);
    AfxMessageBox(szS);
    }  
    }   
    SQLFreeHandle(SQL_HANDLE_STMT, stmt);  
    SQLDisconnect(dbc);  
    SQLFreeHandle(SQL_HANDLE_DBC, dbc);  
    SQLFreeHandle(SQL_HANDLE_ENV, env);  
    }


    //方式二:ADO/////////////////////////华丽的分割线///////////////////////////////////////////////////////////////////
    _ConnectionPtr  sqlSp;
    HRESULT hr=sqlSp.CreateInstance(_uuidof(Connection));

    if(FAILED(hr))
    {
    AfxMessageBox("_ConnectionPtr对象指针实例化失败!!!");
    return ;
    }
    else {
    try {
    _bstr_t strConnect="Driver={sql server};server=192.168.1.29;uid=sa;pwd=ebank@123;database=baoshang;";
    sqlSp->Open(strConnect,"","",adModeUnknown);
    }
    catch(_com_error &e) 
    {
    AfxMessageBox(e.Description());
    return;
    }
    _RecordsetPtr m_pRecordset;
    if(FAILED(m_pRecordset.CreateInstance( _uuidof( Recordset ))))
    {
    AfxMessageBox("记录集对象指针实例化失败!");
    return;
    }
    try {
    m_pRecordset->Open("select * from  dbo.TB_DICT_CONTTYPE",(IDispatch*)sqlSp,adOpenDynamic,adLockOptimistic, adCmdText);
    }
    catch (_com_error &e)
    {
    AfxMessageBox(e.Description());
    return;
    }
    try {
    m_pRecordset->MoveFirst();
    while(!m_pRecordset->adoEOF) 
    {
    CString insertTime=(char*)(_bstr_t)(m_pRecordset->Fields->GetItem(_variant_t("F_TYPE_ID"))->Value);
    AfxMessageBox(insertTime);
    m_pRecordset->MoveNext();
    }
    }
    catch (_com_error &e)
    {
    AfxMessageBox(e.Description());
    return;
    }
    }

    }

  • 相关阅读:
    CDH健康检查报DATA_NODE_BLOCK_COUNT告警
    log4net 日志不能输出
    beetsql 入门学习
    http headers详解
    python3 urllib学习
    python学习疑难1 -- 解决python3 UnicodeEncodeError: 'gbk' codec can't encode character 'xXX' in position XX
    Filter的应用
    SQL简单存储过程
    脑残问题收集
    core 标签简单使用
  • 原文地址:https://www.cnblogs.com/YZFHKMS-X/p/12663260.html
Copyright © 2011-2022 走看看