.net执行多重查询

出处:淘特网

一般我们在写程序的时候,经常会遇到多次查询的情况,看下面的例子:

' 建立与Sql数据库Northwind的连接
Dim connString As String = _
    "Provider=SQLOLEDB.1;Integrated Security=SSPI;Initial " _
    & "Catalog=Northwind;Data Source=."
Dim cn As New OleDbConnection(connString)
cn.Open()
' 读取数据总个数
Dim cmd As New OleDbCommand("SELECT COUNT(*) FROM Customers", cn)
Dim totalRows As Long = CInt(cmd.ExecuteScalar())

' 读取所有记录
cmd = New OleDbCommand("SELECT * FROM Customers", cn)
Dim dr As OleDbDataReader = cmd.ExecuteReader()

Dim currRow As Integer
Do While dr.Read
     '更新标签
     currRow += 1
     Label1.Text = String.Format("{0}% complete", currRow * 100 / totalRows)
     Label1.Refresh()
     '
     ' ...

Loop
dr.Close()
cn.Close()
看到了吧,,如果我们要执行两个或以上的查询,我们就需要不断的复制cmd = New OleDbCommand("SELECT * FROM Customers", cn)之类的代码,幸运的是Sqlserver提供了对多重查询的支持,所以我们的代码可以修改如下:
' 建立与数据库Northwind的连接
Dim connString As String = _
    "Provider=SQLOLEDB.1;Integrated Security=SSPI;Initial " _
    & "Catalog=Northwind;Data Source=."
Dim cn As New OleDbConnection(connString)
cn.Open()

' 准备两条查询命令
Dim cmd As New OleDbCommand("SELECT COUNT(*) FROM Customers;SELECT * FROM " _
    & "Customers", cn)
Dim dr As OleDbDataReader = cmd.ExecuteReader()
' 第一条查询记录的结果仅为一列
dr.Read()
Dim totalRows As Long = CInt(dr(0))

' 第二条查询记录返回所有的记录
dr.NextResult()
Dim currRow As Integer
Do While dr.Read
    ' 更新标签
    currRow += 1
    Label1.Text = String.Format("{0}% complete", currRow * 100 / totalRows)
    Label1.Refresh()
    '
    ' ...
Loop
dr.Close()
cn.Close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值