SQL 游标

           前一段时间一直在查SQL中游标和指针的区别,最后发现好像在SQL Server中没有指针这一概念(不是很确定有没有谁给我个明确的资料看看)。但是,在C++中指针是一种变量存储这内存中的一个物理地址。相当于家庭住址吧,就是你想找谁,按着家庭住址(指针)就能找到他。原来我以为指针和游标是差不多的东西,实际上这是两种完全不同的东西,指针的的实质是一个变量,而游标是一种机制,不过游标也需要声明的(其实当变量理解也可以行的通也)。下面具体说说游标这个东西!

      游标的理解

      因为关系型数据库是面向集合的,即它的操只能面向集合做统一的操作。这样若要对集合的单条记录做差异化操作时就只能使用where子句去逐条选择,即让结果集中只存在一条记录。很麻烦!而游标就提供了这样的机制可以让你对集合中的记录逐条操作,游标是面向单条记录的。这就好像米老师要找已毕业的学生谈话,谈话结束后米老师还要对其中的某些学生单独谈话。这时候米老师怎么办——叫到他的办公室去,叫到办公室的这个过程其实就是游标的机制。如果没有这个机制,米老师就得先让大家回去,然后再一个个叫,岂不麻烦?

      游标的分类

      游标分为:T-SQL服务器游标、API服务器游标、客户机游标

      在现阶段你使用过游标吗?答案是肯定的我们使用过游标。我们使用的是客户机游标!由于T-SQL服务器和API服务器游标没有使用过这里就不说了,怕说错。我们什么时候使用了客户机游标了呢?请看以下代码:

 

If InStr("INSERT,DELETE,UPDATE", UCase(StrTokens(0))) Then '判断动作                     Objcn.Execute SQL
                  Msgstring = StrTokens(0) & "成功"
Else
                  Set Objrs = New ADODB.Recordset
                  Objrs.Open Trim(SQL), Objcn, adOpenKeyset, adLockOptimistic
                  Set ExecuteSQL = Objrs                              '赋予函数返回值
                  Msgstring = "查询到" & Objrs.RecordCount & "条记录"
End If

      不知道大家有没有注意过红色那句代码,这里就涉及道了游标!参数adOpenKeyset就是游标类型。adodb.reccordset.open中游标参数有以下值:

       0   adOpenForwardOnly      使用仅向前游标。除了在记录中只能向前滚动外,与静态游标相同。当只需要在 Recordset 中进行一个传递时,用它可提高性能。

       1   adOpenKeyset    使用键集游标。尽管从您的 Recordset 不能访问其他用户删除的记录,但除无法查看其他用户添加的记录外,它和动态游标相似。其他用户所做的数据更改依然可见。

       2   adOpenDynamic  使用动态游标。其他用户所做的添加、更改或删除均可见,而且允许 Recordset 中的所有移动类型(如果提供者不支持书签,则书签除外)。 

       3   adOpenStatic           使用静态游标。一组记录的静态副本,可用于查找数据或生成报告。其他用户所做的添加、更改或删除不可见。

      -1   adOpenUnspecified      不指定游标类型。

       目前我的游标就是这个样子了!以后的以后再说!

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值