标题:[求助]连接数据库出错
只看楼主
wyfandy
Rank: 1
来 自:深圳
等 级:新手上路
帖 子:376
专家分:0
注 册:2006-12-11
 问题点数:0 回复次数:9 
[求助]连接数据库出错
Option Explicit
Dim mydb As Database
Dim myrs As Recordset
Dim SQL As String

Private Sub cmdOK_Click()
Dim Mob As Long
Set mydb = Workspaces(0).OpenDatabase(App.Path & "\rsda.mdb")
SQL = "select * from 手机归属地"
Set myrs = mydb.OpenRecordset(SQL)
End Sub

为什么运行到红色字体的时候出现错误.错误信息:
实时错误'13'
类型不匹配
请各位帮忙指点,非常感谢!

[此贴子已经被作者于2007-1-1 13:43:08编辑过]

搜索更多相关主题的帖子: 数据库 SQL 手机 Dim Set 
2007-01-01 07:59
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
得分:0 
没有用过dao..不清楚.

我的msn: myfend@
2007-01-01 09:42
wyfandy
Rank: 1
来 自:深圳
等 级:新手上路
帖 子:376
专家分:0
注 册:2006-12-11
得分:0 
没人帮忙吗?

不论什么事,只要认准了一个目标,然后朝之不懈地努力,就一定实现。编程爱好者QQ群:21318556
2007-01-01 10:52
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
得分:0 
不要用Dao...已经过时了..用Ado吧..

我的msn: myfend@
2007-01-01 11:49
学习VB才2天
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:1653
专家分:0
注 册:2006-5-4
得分:0 

DeclareFunctionSQLAllocEnvLib"odbc32.dll"(phenv&)AsInteger
DeclareFunctionSQLAllocConnectLib"odbc32.dll"(ByValhenv&,phdbc&)AsInteger
DeclareFunctionSQLAllocStmtLib"odbc32.dll"(ByValhdbc&,phstmt&)AsInteger
DeclareFunctionSQLConnectLib"odbc32.dll"(ByValhdbc&,ByValszDSN$,ByValcbDSN,ByValszUID$,ByValcbUID,ByValszAuthStr$,ByValcbAuthStr)AsInteger
DeclareFunctionSQLColAttributesStringLib"odbc32.dll"Alias"SQLColAttributes"(ByValhstmt&,ByValicol,ByValfDescType,ByValrgbDescAsString,ByValcbDescMax,pcbDesc,pfDesc&)AsInteger
DeclareFunctionSQLDisconnectLib"odbc32.dll"(ByValhdbc&)AsInteger
DeclareFunctionSQLExecDirectLib"odbc32.dll"(ByValhstmt&,ByValszSqlStr$,ByValcbSqlStr&)AsInteger
DeclareFunctionSQLFetchLib"odbc32.dll"(ByValhstmt&)AsInteger
DeclareFunctionSQLFreeConnectLib"odbc32.dll"(ByValhdbc&)AsInteger
DeclareFunctionSQLFreeEnvLib"odbc32.dll"(ByValhenv&)AsInteger
DeclareFunctionSQLFreeStmtLib"odbc32.dll"(ByValhstmt&,ByValfOption)AsInteger
DeclareFunctionSQLGetDataLib"odbc32.dll"(ByValhstmt&,ByValicol,ByValfCType,ByValrgbValueAsString,ByValcbValueMax&,pcbValue&)AsInteger
DeclareFunctionSQLNumResultColsLib"odbc32.dll"(ByValhstmt&,pccol)AsInteger
GlobalConstSQL_C_CHARAsLong=1
GlobalConstSQL_COLUMN_LABELAsLong=18
GlobalConstSQL_DROPAsLong=1
GlobalConstSQL_ERRORAsLong=-1
GlobalConstSQL_NO_DATA_FOUNDAsLong=100
GlobalConstSQL_SUCCESSAsLong=0
DimrcAsInteger'ODBC函数的返回码
DimhenvAsLong'ODBC环境句柄
rc=SQLAllocEnv(henv)'获取ODBC环境句柄
DimhdbcAsLong'连接句柄
rc=SQLAllocConnect(henv,hdbc)'获取连接句柄

DimDSNAsString,UIDAsString,PWDAsString
DSN="DataSourceName"'ODBC数据源名称
UID="UserID"'用户帐号
PWD="Password"'用户口令
rc=SQLConnect(hdbc,DSN,Len(DSN),UID,Len(UID),PWD,Len(PWD))'建立连接
----四、检索结果集

----如果SQL语句被顺利提交并正确执行,那么就会产生一个结果集。检索结果集的方法有很多,最简单最直接的方法是调用SQLFetch和SQLGetData函数。SQLFetch函数的功能是将结果集的当前记录指针移至下一个记录,SQLGetData函数的功能是提取结果集中当前记录的某个字段值。通常可以采用一个循环以提取结果集中所有记录的所有字段值,该循环重复执行SQLFetch和SQLGetData函数,直至SQLFetch函数返回SQL_NO_DATA_FOUND,这表示已经到达结果集的末尾。

DimColValAsString*225
ColVal=String(255,0)
DoUntilSQLFetch(hstmt)=SQL_NO_DATA_FOUND
rc=SQLGetData(hstmt,i,SQL_C_CHAR,ColVal,
Len(ColVal),SQL_NULL_DATA)
Loop

----五、结束应用程序

----在应用程序完成数据库操作,退出运行之前,必须释放程序中使用的系统资源。这些系统资源包括:语句句柄、连接句柄和ODBC环境句柄。完成这个过程的步骤如下:

----1、调用SQLFreeStmt函数释放语句句柄及其相关的系统资源。例如:

rc=SQLFreeStmt(hstmt,SQL_DROP)

----2、调用SQLDisconnect函数关闭连接。例如:

rc=SQLDisconnect(hdbc)

----3、调用SQLFreeConnect函数释放连接句柄及其相关的系统资源。例如:

rc=SQLFreeConnect(hdbc)

----4、调用SQLFreeEnv函数释放环境句柄及其相关的系统资源,停止ODBC操作。例如:

rc=SQLFreeEnv(henv)

----此外,在编制程序时还有一个需要重点考虑的问题,这就是错误处理。所有ODBCAPI函数,若在执行期间发生错误,都将返回一个标准错误代码SQL_ERROR。一般来讲,在每次调用ODBCAPI函数之后,都应该检查该函数返回值,确定该函数是否成功地执行,再决定是否继续后续过程。而详细的错误信息,可以调用SQLError函数获得。SQLError函数将返回下列信息:

标准的ODBC错误状态码

ODBC数据源提供的内部错误编码

错误信息串
----简单应用实例

----本实例将编制一个客户机端VB应用程序,通过WindowsNT局域网查询服务器端MSSQLServer6.5样板数据库PUBS中的AUTHORS数据表,并在一个Grid控件中显示查询结果。首先,使用Windows控制面板中的ODBC驱动管理器新建一个ODBC数据源,定义数据源名称为ODBC_API_DEMO,定义登录数据库为PUBS,其它信息应根据用户的环境正确设置。然后,启动VB,新建一个项目Project1,在缺省窗体Form1中加入一个Grid控件Grid1、两个CommandButton控件cmdQuery和cmdClose,在Project1中插入一个模块Module1,将前面列举的声明语句加入其中。程序代码如下:

PrivateSubForm_Load()
DimrcAsInteger
rc=SQLAllocEnv(henv)
Ifrc<>0Then
MsgBox"无法初始化ODBC"
End
EndIf
rc=SQLAllocConnect(henv,hdbc)
Ifrc<>0Then
MsgBox"无法获得连接句柄"
rc=SQLFreeEnv(henv)
End
EndIf
DimDSNAsString,UIDAsString,PWDAsString
DSN="ODBC_API_DEMO"
UID="guest"
PWD=""
rc=SQLConnect(hdbc,DSN,Len(DSN),
UID,Len(UID),PWD,Len(UID))
Ifrc=SQL_ERRORThen
MsgBox"无法建立与ODBC数据源的连接"
End
EndIf
EndSub
PrivateSubcmdQuery_Click()
DimhstmtAsLong
DimSQLstmtAsString
DimRSColsAsInteger,RSRowsAsLong
DimrcAsInteger,iAsInteger,jAsInteger
DimColValAsString*1024
DimColValLenAsLong,ColLabLenAsInteger,largAsLong
rc=SQLAllocStmt(hdbc,hstmt)
Ifrc<>SQL_SUCCESSThen
MsgBox"无法获得SQL语句句柄"
ExitSub
EndIf
SQLstmt="SELECT*FROMauthors"
rc=SQLExecDirect(hstmt,SQLstmt,Len(SQLstmt))
Ifrc<>SQL_SUCCESSThen
MsgBox"SQL语句执行失败"
ExitSub
EndIf
rc=SQLNumResultCols(hstmt,RSCols)
IfRSCols>1Then
Grid1.Cols=RSCols
Grid1.Rows=10
Grid1.Row=0
Else
ExitSub
EndIf
Fori=1ToRSCols
rc=SQLColAttributesString(hstmt,i,
SQL_COLUMN_LABEL,ColVal,255,ColLabLen,larg)
Grid1.Col=i-1
Grid1.Text=Left(ColVal,ColLabLen)
Nexti
DoUntilSQLFetch(hstmt)=SQL_NO_DATA_FOUND
ColVal=String$(1024,0)
IfGrid1.Row 1>=Grid1.RowsThen
Grid1.Rows=Grid1.Rows 1
EndIf
Grid1.Row=Grid1.Row 1
Fori=1ToRSCols
rc=SQLGetData(hstmt,i,SQL_C_CHAR,
ColVal,Len(ColVal),ColValLen)
Grid1.Col=i-1
Grid1.Text=Left$(ColVal,ColValLen)
Nexti
Loop
rc=SQLFreeStmt(hstmt,SQL_DROP)
EndSub
PrivateSubcmdClose_Click()
DimrcAsInteger
Ifhdbc<>0Then
rc=SQLDisconnect(hdbc)
EndIf
rc=SQLFreeConnect(hdbc)
Ifhenv<>0Then
rc=SQLFreeEnv(henv)
EndIf
End
EndSub

----实例程序是使用VisualBasic4.0在Windows95环境下开发的。->


[GLOW=255,DeepPink,3]我的免费网盘[/GLOW]
2007-01-01 12:16
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
得分:0 
不知道楼上..贴这东西出来..有何意义?.

我的msn: myfend@
2007-01-01 12:18
学习VB才2天
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:1653
专家分:0
注 册:2006-5-4
得分:0 

連接數據庫啊 ````


[GLOW=255,DeepPink,3]我的免费网盘[/GLOW]
2007-01-01 13:16
wyfandy
Rank: 1
来 自:深圳
等 级:新手上路
帖 子:376
专家分:0
注 册:2006-12-11
得分:0 
可惜就是看到我头都大了

总之非常感谢俩位

不论什么事,只要认准了一个目标,然后朝之不懈地努力,就一定实现。编程爱好者QQ群:21318556
2007-01-01 13:40
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
得分:0 

现在已是Ado的天下了.
还是用ado吧..


我的msn: myfend@
2007-01-01 13:44
学习VB才2天
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:1653
专家分:0
注 册:2006-5-4
得分:0 
ADO的庫很大```有好幾百K叻```

[GLOW=255,DeepPink,3]我的免费网盘[/GLOW]
2007-01-01 13:56



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-113521-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.047403 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved