VB中总是提示连接无法用于执行此操作。在此上下文中它可能已被关闭或无效 是什么原因呢?怎么解决

2024-11-07 09:40:05
推荐回答(3个)
回答(1):

我给个建议吧,用ADO控件,代码太复杂过时,都没法看
Adodc1.connectionstring="Driver={SQL Server};Server=服务器IP;Uid=用户名;Pwd=密码;DataBse=数据库名"
Adodc1.RecordSource="SELECT * FROM 表名 WHERE 条件"
Adodc1.Refrsh
这样就行了,你要处理处理下连接异常就加句
Adodc1.ConnectionTimeout = 时间值
你的错误不上那句打开数据源语句写错了,而是根本就没有去连接数据库,你直接去查询数据表了,你的数据库数据从哪里来?ADODB.ConnectionString呢,原代码是不是把conn定义为ADO连接字符串,你没给他定义怎么直接就用了起来,所以他在这句提示:
rs_add.Open sql, conn, adOpenKeyset, adLockPessimistic //实时错误'3709'
conn是什么?根本就没定义,非要这样,你就该先定义
Dim conn As ADODB.Connecton
再给他赋值
conn.ConnectionString="连接服务器数据库字符串"
再可以对他的数据源进行操作,这种方法相当过时,而且代码复杂,我的建议是你用
Microsoft ADO Data Control 2.0控件,直接给他的两个属性赋值就好了
Adodc1.connectionstring="Driver={SQL Server};Server=服务器IP;Uid=用户名;Pwd=密码;DataBse=数据库名"
Adodc1.RecordSource="SELECT * FROM 表名 WHERE 条件"
Adodc1.Refrsh
这就算是连接上了,要去登陆验证那就改这句
Adodc1.RecordSource="SELECT * FROM 表名 WHERE 用户名='"+控件名称+"' AND 密码='"+控件名称+"'"
用窗体上的控件去筛选,查询结果为空时就是ADO控件记录集为假,那就判断他:
IF Adodc1.RecordSet.EOF Then
。。。。
ELSE
登陆
。。。。
END if
是不是比上面的代码好理解多了

回答(2):

你应该是在之前有一个打开数据库的过程,这些代码应该是你的一部分代码,在你打开数据库以后,你应该是用别的方法关闭了它,所以你这儿提示出现了不正确。你在那儿加了一个实时错误,这块本身没有问题,你的数据库操作语法也没有错误。原因应该是你在之前关闭了数据库。这是我个人的见解,因为我以前碰到过这种问题。 我刚才试验了一下,你的程序本身是没有问题的,所以你可以看一看涉及到数据库的部分,很好改正

回答(3):

你的conn 没有写,如果写了conn还是不行的话 试试下面的:
rs_add.Open sql, conn, adOpenKeyset, adLockPessimistic 改为rs_add.Open sql, conn