[求助][求助]连接数据库超时的问题
提示错误:实时错误 -2147217871 (80040e31) 超时已过期db.ConnectionString = "Provider=SQLOLEDB.1;User ID=sa;Password=sa;Persist Security Info=True;Initial Catalog=SQL;Data Source=SQLFWQ"
db.Open
提示位置--> rs.Open "select * from table1,table2,table3", db, adOpenStatic, adLockReadOnly
rs.Close
这是怎么回事?
然后加个代码On Error Resume Next倒是执行查询了,但是查询速度很慢啊,相同条件用SQL不到1秒就查到了,用VB却用了30秒才查到。
有什么办法可以加快查询速度呢?
--------------------编程问答-------------------- 我也碰到相似的问题,学习! --------------------编程问答-------------------- select * from table1,table2,table3
这三表一起查询没有关联条件吗
--------------------编程问答-------------------- "select * from table1,table2,table3"
一般,这样的查询是没有意义的,并且需要大量的运算,首先,table1的所有行和table2的所有行进行组合,然后将组合后的表的每行和table3的所有行进行组合
比如,table1,table2,table3各为100行,则将返回100*100*100=1000000行的数据
--------------------编程问答-------------------- 有关联,附下面语句
rs.Open " SELECT table1.nid, table1.name, table1.age, table2.sname, table3.class FROM table1 INNER JOIN table2 on table1.h_id=table2.h_id INNER JOIN table3 on table1.h_id=table3.h_id WHERE 1=1 " & id & name & age & class
Set MSHFlexGrid1.DataSource = rs --------------------编程问答-------------------- 将rs.Open "select * from table1,table2,table3", db, adOpenStatic, adLockReadOnly
改为rs.Open "select * from table1,table2,table3", db, adOpenDynamic, adLockOptimistic后,速度飞快到不到1秒了
但是我后面还有一句
If rs.EOF Then
MsgBox "没有查询到数据!", vbOKOnly + vbExclamation, "警告"
End If
在查询到数据之后出现“没有查询到数据”,这应该是查不到数据才出来的,查询到了怎么还出来了呢? --------------------编程问答-------------------- 改为rs.Open "select * from table1,table2,table3", db, adOpenForwardOnly后速度更快了。 --------------------编程问答-------------------- 我也碰到相似的问题,学习!
补充:VB , 数据库(包含打印,安装,报表)