| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1786 人关注过本帖
标题:问题很简单了,麻烦来指点下(SQL)
只看楼主 加入收藏
yibai
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-12-24
收藏
 问题点数:0 回复次数:11 
问题很简单了,麻烦来指点下(SQL)
在VB6中用SQL语句查询数据库返回结果,语句如下:
sql = "select name,phyname from sysdevices"
Set rs = conn.Execute(sql)

现在的问题是我想遍历rs的每条记录,找出name='master'的记录
遍历一条记录的各个字段倒会,遍历每条记录怎么搞啊?
本人正step by step学习SQL中,麻烦高手来指点下了!!!
3Q
搜索更多相关主题的帖子: SQL 麻烦 
2006-12-24 22:07
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
收藏
得分:0 
SQL没学好吧,改成这样,不用遍历

sql = "select name,phyname from sysdevices where name='master'"

天津网站建设 http://www./
2006-12-24 23:49
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 

同意楼上...不过.看看name是不是数据库的关键字..如果是..那就要加[]


我的msn: myfend@
2006-12-25 08:57
yibai
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-12-24
收藏
得分:0 
谢谢了
不过给出的不是我想要的答案啊
通过限定语句查的话有可能检索的记录不是唯一的哦
我真实的目的就是想要知道遍历记录的方法
而并不是查name='master'啊


欢迎再来指点下了
2006-12-26 10:03
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
那你就是说...
你的记录集中..name字段中的值可能有两个master的值咯?..
那你用sql = "select name,phyname from sysdevices where name='master'"
跟你遍历查到的结果就是一样的咯...而且速度方面...慢得厉害...

如果非要用遍历的话..
那你可以做个循环...从0到Recordset的RecordCount-1...
然后再去判断它的字段是否为你想要的....

不过这样...还远远不如select查询....

感觉你不太理解sql语言的原理..

我的msn: myfend@
2006-12-26 10:07
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 

4lD9IcdM.zip (2.76 KB) 问题很简单了,麻烦来指点下(SQL)



我用了两个方法..一个普通的遍历..一个select查询..从效果和效率来看.显示select查询是最佳的选择..

Option Explicit
'先添加两个ListBox控件..分别用来存放遍历查询和Select查询返回的结果
'再添加两个CommandButton控件.Caption分别为遍历和Select查询
'接着在工程->引用->Microsoft ActiveX Data Objects 2.7 Library
Private dbConn As ADODB.Connection
Private rst As ADODB.Recordset

Private Sub Command1_Click()
Call whileEndQuery
End Sub

Private Sub Command2_Click()
Call selectQuery
End Sub

Private Sub Form_Load()
Dim conString As String
conString = "Provider=SQLOLEDB;Data Source=127.0.0.1;Initial Catalog=Northwind;" _
& "User ID=sa;Password=admin"
'这里我连接的是Sql Server数据库.你也可以连接Access数据库,相应的连接字符串是:
'Provider=Microsoft.Jet.OleDb.4.0;Data Source=d:\mdb\Northwind.mdb

Set dbConn = CreateObject("ADODB.Connection") '创建Connection实例
dbConn.ConnectionString = conString
dbConn.Open
End Sub

Private Sub selectQuery()
Dim sql As String
Dim icurrRecord As Long
sql = "select [OrderID] from [orders] where [ShipCountry]='USA'"
'这里我要查找的是ShipCountry字段为USA的OrderID号是多少.

Set rst = CreateObject("ADODB.Recordset")
With rst
.CursorLocation = adUseClient
.Open sql, dbConn, adOpenForwardOnly, adLockReadOnly, adCmdText
If .RecordCount > 0 Then '如果查询之后有记录的话
.MoveFirst
For icurrRecord = 0 To .RecordCount - 1 '循环得到查找出来的值
List2.AddItem .Fields("OrderID").Value
.MoveNext '移到下一条
Next
End If
.Close
End With
End Sub

Private Sub whileEndQuery() '遍历查找
Dim sql As String
Dim icurrRecord As Long
sql = "select * from [orders]"
Set rst = CreateObject("ADODB.Recordset")
With rst
.CursorLocation = adUseClient
.Open sql, dbConn, adOpenForwardOnly, adLockReadOnly, adCmdText
If .RecordCount > 0 Then
.MoveFirst
For icurrRecord = 0 To .RecordCount - 1
If .Fields("ShipCountry").Value = "USA" Then '如果它的值是USA的话
List1.AddItem .Fields("OrderID").Value '添加到list1中
End If
.MoveNext '移到下一条
Next
End If
.Close
End With
End Sub

Private Sub Form_Unload(Cancel As Integer)
Set rst = Nothing
Set dbConn = Nothing
End Sub



我的msn: myfend@
2006-12-26 10:45
yibai
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-12-24
收藏
得分:0 
太感谢了

正需要的就是这种例子,能解决不少问题

努力学习中。。。


2006-12-26 11:07
zsolong
Rank: 1
等 级:新手上路
威 望:1
帖 子:193
专家分:0
注 册:2006-12-15
收藏
得分:0 
以下是引用purana在2006-12-25 8:57:29的发言:

同意楼上...不过.看看name是不是数据库的关键字..如果是..那就要加[]

顺便问一下,为什么是关键字反而要加[]啊?能解释一下吗?谢谢。
我记得好像不需要加吧?


2006-12-27 09:08
fengrqgfg
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2007-6-17
收藏
得分:0 

收下

2007-06-17 10:39
fqqklwj
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-4-22
收藏
得分:0 

努力中……


学习中真是受益匪浅,努力~努力~
2007-07-07 21:34
快速回复:问题很简单了,麻烦来指点下(SQL)
数据加载中...
 
   



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

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