使用如下方法,当执行到SQLDriverConnect的时候出现一个Dialog Box,选中一个数据源,输入登陆密码,按确定后立即崩溃,想请教一下原因或者是否有地方做的不对:Dim strOut As String
Dim nOut As Integer
Dim nRes As Integer
Dim hConn As Long
Dim hEnv As Long
nRes = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, hEnv)
nRes = SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, SQL_OV_ODBC3, 0)
nRes = SQLAllocHandle(SQL_HANDLE_DBC, hEnv, hConn)
strOut = Space(200)
'这里输入的连接字符串可以为空吗?
nRes = SQLDriverConnect(hConn, Me.hwnd, "", 0, strOut, 150, nOut, SQL_DRIVER_PROMPT)...程序中用到的常量我都查过了,肯定没有错。
Dim nOut As Integer
Dim nRes As Integer
Dim hConn As Long
Dim hEnv As Long
nRes = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, hEnv)
nRes = SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, SQL_OV_ODBC3, 0)
nRes = SQLAllocHandle(SQL_HANDLE_DBC, hEnv, hConn)
strOut = Space(200)
'这里输入的连接字符串可以为空吗?
nRes = SQLDriverConnect(hConn, Me.hwnd, "", 0, strOut, 150, nOut, SQL_DRIVER_PROMPT)...程序中用到的常量我都查过了,肯定没有错。
解决方案 »
- vb怎样实现备份sql数据库
- 强烈抗议CSDN!!!!!!:每隔5秒钟CSDN会自动激活并切换到社区中心网页,最小化都不行,我们没法论坛了!!!
- 要将中英文字符通过网络传送,如何加密?用asp接收
- 求助:printer.line方法,怎样设置线宽
- 让人吐血的SQL语句问题,拜求高手
- 求助:如何用sendmessage发送[ALT]+[ENTER]组合键给已知句柄的窗体
- vb 进行计算时,两个已知数是excel中的两列数据,如何使其能够连续计算?
- ReadProcessMemory高手请进
- *****九月十五号在沈阳五里河体育场《中乌之战》答错者给分?????
- 关于SQL的问题。
- where download 水晶报表
- 屏蔽系统右键的问题
我想问一下如果要传递byte数组的指针是不是应该声明为
byref bName() as byte
这种形式?还是应该用byval?
(ps:我刚刚从c++转过来不久,还不太熟悉VB。)
global gihdb as long
dim myresult as integer
dim myconnection as string
dim mybuff as string *256
dim mybufflen as integermyconnection="dsn=sqlperson;uid=;pwd=;app=odbstest;wsid=lci;database=people"
myresult=sqldriverconnect(gihdb,test,form1.hwnd,myconnection,len(myconnection),mybuff,256,mybufflen,sql_driver_complete_requied)
把所有的handle都设成global了,SQLAllocHandle还是不能省,但是myconnection如果全部正确的话还是会崩掉,myconnection错误的话就返回-2了。
使用PROMPT则是全部输入结束以后崩的,看上去是填充到那个输出缓冲(mybuff)的时候出错(我怀疑是不是底层有一些不安全的操作)。
郁闷……
估计用文件也可以,如果不输出的话直接写到配置文件就得了。
太麻烦了,SQLDriverConnect底层肯定做了什么特殊的字符串操作,vb的string不支持才会出错的。