SQLRETURN SQLDriverConnect(
     SQLHDBC     ConnectionHandle,
     SQLHWND     WindowHandle,
     SQLCHAR *     InConnectionString,
     SQLSMALLINT     StringLength1,
     SQLCHAR *     OutConnectionString,
     SQLSMALLINT     BufferLength,
     SQLSMALLINT *     StringLength2Ptr,
     SQLUSMALLINT     DriverCompletion);
其中InConnectionString 有哪几种形式
我想得到执行代码后生成一个.dsn文件,以后可以通过这个文件连接相关的SQL数据库,请牛牛指点一二  

解决方案 »

  1.   

    SQLDriverConnect proto ConnectionHandle:DWORD,\
        hWnd:DWORD,\
        pInConnectString:DWORD,\
        InStringLength:DWORD,\
        pOutConnectString:DWORD, \
        OutBufferSize:DWORD,\
        pOutConnectStringLength:DWORD,\
        DriverCompletion:DWORDConnectionHandle连接句柄
    hWnd 应用程序窗口句柄.如果这个参数被置为NULL,驱动程序将不会为用户显示一个对话框来显示更多信息(如果有的话).
    pInConnectString 指向连接字符串的指针. 这是一个ASCIIZ字符串,格式由要连接的具体ODBC驱动程序描述.它描述了驱动程序名、数据源及其他附加属性.连接字符串的具体描述请参见MSDN,这里不再细述.
    InStringLength 连接字符串的长度.
    pOutConnectString 指向将要被填入完整连接字符串的缓冲区的指针.这个缓冲区将至少有1,024字节长.这听上去使人困惑。事实上,我们提供的连接字符串会不完整,这时,ODBC驱动程序会提示用户更多信息.接下来ODBC驱动程序会根据所有可能的信息创建一个完整的连接字符串并将其放入缓冲区。即使我们提供的连接字符串已经可以工作了,这个缓冲区也会填入更多的属性值.这个参数的目的是我们可以保存完整连接字符串来为接下来的连接做准备。
    OutBufferSize 由pOutConnectString指向的缓冲区的长度.
    pOutConnectStringLength 指向一个双字的指针,用来接收由ODBC驱动程序返回的完整连接字符串的长度。
    DriverCompletion 一个标志用来指示ODBC管理器/驱动程序是否将提示用户更多信息.但是,这个标志取决于是否在调用本函数时传送了hWnd 参数一个窗口句柄。如果没有,即使该标志被设置,ODBC管理器/驱动程序也不会提示用户.可能值如下:SQL_DRIVER_PROMPT ODBC驱动程序提示用户输入信息。驱动程序将利用这些信息来创建连接字符串.
    SQL_DRIVER_COMPLETE
    SQL_DRIVER_COMPLETE_REQUIRED 仅当用户提供的连接字符串不完全时, ODBC驱动程序才会提示用户.
    SQL_DRIVER_NOPROMPT ODBC驱动程序将不会提示用户.
      

  2.   

    InConnectionString具体怎么写得看你具体是什么数据库.. 写法可以参考http://www.connectionstrings.com/
      

  3.   

    #include<windows.h>
    #include<sql.h>
    #include<sqlext.h>
    #include<odbcss.h>#define MAXBUFLEN 255SQLHENV henv = SQL_NULL_HENV;
    SQLHDBC hdbc = SQL_NULL_HDBC;int main()
    {
    RETCODE retcode;
    SQLCHAR szConnStrIn[MAXBUFLEN] = 
    "SAVEFILE=MyFileDSN;DRIVER={SQL Server};SERVER=(local)"
    "NETWORK=dbmssocn;UID=sa;PWD=;";SQLCHAR szConnStrOut[MAXBUFLEN];
    SQLSMALLINT cbConnStrOut = 0;
    retcode = SQLAllocHandle(SQL_HANDLE_ENV,NULL,&henv);
    retcode = SQLSetEnvAttr(henv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);retcode = SQLAllocHandle(SQL_HANDLE_DBC,henv,&hdbc);
    retcode = SQLDriverConnect(hdbc,NULL,szConnStrIn,SQL_NTS,szConnStrOut,MAXBUFLEN,&cbConnStrOut,SQL_DRIVER_NOPROMPT);
    SQLDisconnect(hdbc);
    strcpy((char*)szConnStrIn,"FILEDSN=MyFileDSN;UID=sa;PWD=;");
    retcode = SQLDriverConnect(hdbc,NULL,szConnStrIn,SQL_NTS,szConnStrOut,MAXBUFLEN,&cbConnStrOut,SQL_DRIVER_NOPROMPT);
    SQLDisconnect(hdbc);
    SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
    SQLFreeHandle(SQL_HANDLE_ENV,henv);
    return (0);
    }NETWORK 是指什么?
      

  4.   

    不要那个.. :
    Driver={SQL Server};Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
      

  5.   

    顺便问一下高手,生成的.dsn文件在哪里可以找到
      

  6.   

    点"管理帖子" , 在每楼右边填上给的分数, 然后点"结帖"
    呵呵, 这个我没生成过, 你cmd下面 dir *.dsn /s/a 试试