CSDN的各位大虾们帮帮小弟。
小弟连了1上午了。网上的资料不是很全阿,至少我找到的是这样的。
我just需要C++连接SQL Server的代码,不是VC。
呵呵,静候中阿。
不管怎么样,进来看的人我都谢谢你们的关心。

解决方案 »

  1.   

    //你参考一下
    //倒入ADO库 
    #import "c:\Program Files\Common Files\System\ADO\msado15.dll" 
       no_namespace rename("EOF", "EndOfFile")#include <stdio.h>// 错误处理的
    inline void TESTHR( HRESULT _hr ) 
       { if FAILED(_hr) _com_issue_error(_hr); }
    void main(void)
    {
       CoInitialize(NULL);
       try 
       {
       _RecordsetPtr   pRs("ADODB.Recordset");
       _ConnectionPtr  pCn("ADODB.Connection");
       _variant_t      vtTableName("authors"),
                       vtCriteria;
       long            ix[1];
       SAFEARRAY       *pSa = NULL;   pCn->Open("DSN=pubs;User ID=sa;pwd=;Provider=MSDASQL;", "", "", 
                   adConnectUnspecified);
    // Note 2, Note 3
       pSa = SafeArrayCreateVector(VT_VARIANT, 1, 4);
       if (!pSa) _com_issue_error(E_OUTOFMEMORY);// 为第三个元素赋值TABLE_NAME(索引值2). 
       ix[0] = 2;      
       TESTHR(SafeArrayPutElement(pSa, ix, &vtTableName));// 由于Variant没有SafeArray的构造函数,所以手工设置Variant的数据类型和值。
       vtCriteria.vt = VT_ARRAY | VT_VARIANT;
       vtCriteria.parray = pSa;   pRs = pCn->OpenSchema(adSchemaColumns, vtCriteria, vtMissing);   long limit = pRs->GetFields()->Count;
       for (long x = 0; x < limit; x++)
          printf("%d: %s\n", x+1, 
             ((char*) pRs->GetFields()->Item[x]->Name));
    // Note 4
       pRs->Close();
       pCn->Close();
       }
       catch (_com_error &e)
       {
       printf("Error:\n");
       printf("Code = %08lx\n", e.Error());
       printf("Code meaning = %s\n", (char*) e.ErrorMessage());
       printf("Source = %s\n", (char*) e.Source());
       printf("Description = %s\n", (char*) e.Description());
       }
       CoUninitialize();
    }
      

  2.   

    #define DBNTWIN32
    #include <stdio.h>
    #include <windows.h>
    #include <sqlfront.h>
    #include <sqldb.h>// Forward declarations of the error handler and message handler. 
    int err_handler(PDBPROCESS, INT, INT, INT, LPCSTR, LPCSTR);
    int msg_handler(PDBPROCESS, DBINT, INT, INT, LPCSTR, LPCSTR,
                    LPCSTR, DBUSMALLINT);main()
    {
        PDBPROCESS  dbproc;    // The connection with SQL Server. 
        PLOGINREC   login;     // The login information. 
        DBCHAR      name[100];
        DBCHAR      city[100];    // Install user-supplied error- and message-handling functions.
        dberrhandle (err_handler);
        dbmsghandle (msg_handler);    // Initialize DB-Library.
        dbinit ();    // Get a LOGINREC.
        login = dblogin ();
        DBSETLUSER (login, "my_login");
        DBSETLPWD (login, "my_password");
        DBSETLAPP (login, "example");    // Get a DBPROCESS structure for communication with SQL Server. 
        dbproc = dbopen (login, "my_server");    // Retrieve some columns from the authors table in the
        // pubs database.    // First, put the command into the command buffer. 
        dbcmd (dbproc, "SELECT au_lname, city FROM pubs..authors");
        dbcmd (dbproc, " WHERE state = 'CA' ");    // Send the command to SQL Server and start execution. 
        dbsqlexec (dbproc);    // Process the results. 
        if (dbresults (dbproc) == SUCCEED)
        {
            // Bind column to program variables. 
            dbbind (dbproc, 1, NTBSTRINGBIND, 0, name);
            dbbind (dbproc, 2, NTBSTRINGBIND, 0, city);        // Retrieve and print the result rows. 
            while (dbnextrow (dbproc) != NO_MORE_ROWS)
            {
                printf ("%s from %s\n", name, city);
            }
        }    // Close the connection to SQL Server. 
        dbexit ();    return (0);
    }int err_handler (PDBPROCESS dbproc, INT severity,
        INT dberr, INT oserr, LPCSTR dberrstr, LPCSTR oserrstr)
    {
        printf ("DB-Library Error %i: %s\n", dberr, dberrstr);
        if (oserr != DBNOERR)
        {
            printf ("Operating System Error %i: %s\n", oserr, oserrstr);
        }
        return (INT_CANCEL);
    }int msg_handler (PDBPROCESS dbproc, DBINT msgno, INT msgstate,
        INT severity, LPCSTR msgtext, LPCSTR server,
        LPCSTR procedure, DBUSMALLINT line)
    {
        printf ("SQL Server Message %ld: %s\n", msgno, msgtext);
        return (0);
    }不知道是不是你想要的。
      

  3.   

    先谢谢你们。我又试了。都不行。我是在C++上运行的。第一个程序老不停止。第二个程序提示没sqlfront.h还有很多错误。呵呵。
    我是蔡鸟。不好意思。
    时间紧迫点。我自己也看看书。大家有可以执行的记得帮我贴上来。呵呵。
    谢谢啦。
      

  4.   

    谢谢。
    那我至少定下范围了。好好学习这两个程序。
    弱弱的问下:运行这两个程序需要装VC么?还有数据库如果是Access的上面的两个程序还可以么?
    我是蔡鸟。呵呵。不过也是努力学习的鸟儿哦。
    QQ:41968472
    欢迎探讨。共同学习。呵呵。
    好急啊。呵呵。
      

  5.   

    第一个程序你需要有一个和程序相匹配的数据库应该要装VC的
    如果你改成ACCESS的话,只要把连接字符串改一下就行了
      

  6.   

    恩,我建议搂主有时间看一下MSDN里面关于C/c++连接数据库的资料~~~
    但是我也没怎么用过.
    关于C/c++连接数据库方面的资料相对也比较少~~~
      

  7.   

    fanze2003(孤独的狼)、robin_yao(嘘)、sboom(+-LingCh-+)(爱美人不爱VC)、fanze2003(孤独的狼)、snowbirdfly(专心搞好嵌入式~~~)我都很感谢你们。你们的意见很有建设性。我这段时间没时间看。呵呵。我今天还没去调适。最近忙了点。哎。我也搞嵌入式。呵呵。
      

  8.   

    哎。网上的资料都不全。我现在是希望能在c++中连接Access。而不是VC。大虾们说下。这样可行么?
    因为这个程序的需求就是要求一定不要用vc阿。我也没办法。晕。
      

  9.   

    连接数据库,用ADO和ODBC都可以。
    只要是ADO和ODBC的方法,C++都可以使用。在使用的时候,请用纯C++支持的数据类型。
    可以不装VC,但至少需要一个C++编译器。