连接数据库字符串的问题

xingyunzt 2005-07-01 08:56:16
下面是一段VB 程序,其结果会因连接数据库的字符串不同而产生不同结果,请高手帮忙解释一下这两种写法的区别。谢谢!
Private Sub Command1_Click()
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim connstr As String
Dim sql As String

connstr = "....."
conn.Open connstr

sql = "....."
rs.Open sql, conn, adOpenKeyset, adLockPessimistic, 1
MsgBox rs.Fields(0)

rs.Close
conn.Close
End Sub

这里用到两个存储过程
CREATE PROCEDURE test
as
select * from tbl0630
GO
其中 tbl0630 的内容是 只有一个字段 aa 只有一条记录 "abc"

create PROCEDURE test1
as
CREATE TABLE [#tbl] (
[aa] [varchar] (50) NOT NULL ,
) ON [PRIMARY]

insert #tbl values('123')
select * from #tbl
drop table #tbl

GO
当connstr="Provider=SQLOLEDB.1;Data Source=xingyun;Passw......"时 sql="test" 正常
sql="test1" 报错
而当connstr = "driver={sql server};server=zhangtao;Password=..."是 两个都正常
请高手帮忙
...全文
268 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
summerICEREDTEA 2005-07-20
  • 打赏
  • 举报
回复
第一个是表存在的
xingyunzt 2005-07-20
  • 打赏
  • 举报
回复
自己再顶一下,再没人理我就结帖了。
vbsuperuse 2005-07-19
  • 打赏
  • 举报
回复
好象加上set nocount on就可以了,为什么我也不明白,你试下。
xingyunzt 2005-07-06
  • 打赏
  • 举报
回复
但是为什么用令一种连接方式可以得到预期的结果呢,能帮我讲一下这两种写法的区别吗
paoluo 2005-07-06
  • 打赏
  • 举报
回复
你定义的这个临时表在存储过程内部有效,在外部就没有用了。

应该是这个原因造成你的程序出错。
xingyunzt 2005-07-02
  • 打赏
  • 举报
回复
错误内容是 "在对应所需名称或序数的集合中,未找到项目。"
如果把 MsgBox rs.Fields(0) 改成 MsgBox rs.RecordCount
错误内容是 "对象关闭时,不允许操作。"

sql="test" 或者sql 是普通的查询语句时
执行rs.Open sql, conn, adOpenKeyset, adLockPessimistic, 1以后 rs的状态应该是1
但是sql="test1" 时,rs的状态是0

感觉用第一种连接方式时不能返回存储过程中临时表的查询结果
paoluo 2005-07-01
  • 打赏
  • 举报
回复
sql="test1" 报错,错误是什么、?

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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