SQLDriverConnect连接数据源求助

yinjor 2008-01-30 09:33:59
SQLRETURN SQLDriverConnect(
SQLHDBC ConnectionHandle,
SQLHWND WindowHandle,
SQLCHAR * InConnectionString,
SQLSMALLINT StringLength1,
SQLCHAR * OutConnectionString,
SQLSMALLINT BufferLength,
SQLSMALLINT * StringLength2Ptr,
SQLUSMALLINT DriverCompletion);
其中InConnectionString 有哪几种形式
我想得到执行代码后生成一个.dsn文件,以后可以通过这个文件连接相关的SQL数据库,请牛牛指点一二
...全文
325 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
内存泄漏 2008-01-30
  • 打赏
  • 举报
回复
点"管理帖子" , 在每楼右边填上给的分数, 然后点"结帖"
呵呵, 这个我没生成过, 你cmd下面 dir *.dsn /s/a 试试
yinjor 2008-01-30
  • 打赏
  • 举报
回复
顺便问一下高手,生成的.dsn文件在哪里可以找到
yinjor 2008-01-30
  • 打赏
  • 举报
回复
非常感谢,我怎么做可以给你积分
内存泄漏 2008-01-30
  • 打赏
  • 举报
回复
不要那个.. :
Driver={SQL Server};Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
yinjor 2008-01-30
  • 打赏
  • 举报
回复
#include<windows.h>
#include<sql.h>
#include<sqlext.h>
#include<odbcss.h>

#define MAXBUFLEN 255

SQLHENV 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 是指什么?
内存泄漏 2008-01-30
  • 打赏
  • 举报
回复
InConnectionString具体怎么写得看你具体是什么数据库.. 写法可以参考http://www.connectionstrings.com/
内存泄漏 2008-01-30
  • 打赏
  • 举报
回复
SQLDriverConnect proto ConnectionHandle:DWORD,\
hWnd:DWORD,\
pInConnectString:DWORD,\
InStringLength:DWORD,\
pOutConnectString:DWORD, \
OutBufferSize:DWORD,\
pOutConnectStringLength:DWORD,\
DriverCompletion:DWORD

ConnectionHandle连接句柄
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驱动程序将不会提示用户.

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧