VB ADO常用方法

'创建一个 Connection 实例
  Dim conn As New ADODB.Connection
  '创建一个 Recordset 实例
  Dim rs As ADODB.Recordset
  '1)连接Access数据库:
  CnStr = "PROVIDER=microsoft.jet.oledb.4.0;persist security info=false;data source=" & FileName &";Jet OLEDB:Database Password=" & DbPw
  '2)连接Oracle数据库:
  CnStr = "PROVIDER=MSDAORA.1;Password=" & DbPw& ";User ID=" & DbUser& ";Data Source=" & FileName& ";Persist Security Info=True"
  '3)连接SQL的数据库
  '------------------
  CnStr = "PROVIDER=MSDataShape;Data PROVIDER=MSDASQL;uid="& DbUser & ";pwd="& DbPw & ";DRIVER=SQLServer;DATABASE=" & DbName &";WSID=GQSOFT;SERVER=" & DbName
  
  '也可以使用这段简易代码 CnStr = "Provider=SQLOLEDB;Data Source="& DbIp & ";DATABASE="& DbName & ";UID="& DbUser & ";pwd="& DbPw
  Conn.Open cnstr '使用 Connection 集合的 Open 方法 与数据库建立连接
  
  2、Recordset集合的常用方法
  ==========================
  
  '1)打开一个表
  '------------
  
  Sql = "select * from 表名" 'SQL查询语句
  Set rs = New ADODB.Recordset '新建一个实例
  rs.Open Sql, conn '使用 Open 方法打开数据库中的一个表
  
  '注意,这种打开方式只能使用 rs.MoveNext (即,向后移动行坐标)而不能像其他方向,并且不能修改数据内容
  '
  'rs.Open Sql, conn,1 '虽然只加了个“1”,但这种方法可以向任何方向移动行坐标。
  '
  '以下参数代表了这个可选值的含义
  '0 = adOpenForwardOnly (默认值)打开仅向前类型游标。 
  '1 = adOpenKeyset 打开键集类型游标。 
  '2 = adOpenDynamic 打开动态类型游标。 
  '3 = adOpenStatic 打开静态类型游标。
  '
  '虽然使用以上方法可以可以实现行坐标(游标)的任意移动,但是仍然无法写入数据。因此需要进一步的对Open 方法进行完善
  
  'rs.Open Sql, conn, 1, 3 '后面的3是确定读写权限的
  
  '以下参数代表了这个可选值的含义
  '1 = adLockReadOnly (默认值)只读 — 不能改变数据。 
  '2 = adLockPessimistic 保守式锁定(逐个) —在编辑时立即锁定数据源的记录。 
  '3 = adLockOptimistic 开放式锁定(逐个) — 只在调用 Update方法时才锁定记录。 
  '4 = adLockBatchOptimistic 开放式批更新 — 用于批更新模式(与立即更新模式相对)。
  '
  '2)读写数据
  '----------
  '增加一行记录并对新记录的内容进行修改并保存可以如下写法
  rs.AddNew '增加一行记录
  rs("...")="..." '数据读写操作
  ...
  rs.Update '保存写入资料,如果使用只读权限,则不能使用这个方法
  rs.Close'这个方法用来关闭你所代开的表,如果不使用这个方法也可以,但是数据库仍然认为你在对标进行锁定,可造成数据库负担过重
  
  2、对数据进行筛选和排序
  =======================
  Sql = "select * from 表名" 'SQL查询语句
  '以上为打开一个表的所有内容
  
  Sql = "select top 50 * from 表名" 'SQL查询语句
  '以上为只打开前50行的记录
  
  Sql = "select top 50 列名1,列名2,列名5 from 表名" 'SQL查询语句
  '以上为只打开前50行的记录,并且只打开第1、2、5列数据
  
  Sql = "select * from 表名 where 列名1='" & 字段& "'" 'SQL查询语句
  '以上为一个简单的筛选,表示打开的内容必须符合[列名1='" & 字段& "'"]的内容
  '需要注意的是,数据库列的类型必须匹配,比如字符串类型需要以单引号括起
  '而数字类型则不能用单引号括起
  '另外SQL语句还支持通配符,例如 列名1 like '%" & 字段& "%'" 表示包含[字段]
  '在表达式中的匹配 
  '? _(下划线) 任何单一字符 
  '* or % 零个或多个字符 
  '# 任何单一数字(0 — 9) 
  '[charlist] 任何在字符表中的单一字符 
  '[!charlist] 任何不在字符表中的单一字符 
  '注:根据数据库的不同?、_和*、%的应用有所差别,比如SQL只使用% 和 _ 分别代表多个字符和单一字符
  
  Sql = "select * from 表名 where 列名1='" & 字段& "' orDER BY 字段1 ASC" '对查询结果进行升序排列
  Sql = "select * from 表名 where 列名1='" & 字段& "' orDER BY 字段1 DESC" '对查询结果进行降序排列
  Sql = "select * from 表名 where 列名1='" & 字段& "' orDER BY 字段1 DESC, orDER BY 字段2 DESC"'对查询结果进行多维降序排列(速度奇慢,不推荐使用)
  
  3、Recordset集合的常用属性方法
  ==============================
  rs.BOF '是否游标在最上边
  rs.EOF '是否游标在最下边
  rs.RecordCount '记录集的行数(如果使用像前类型的游标,可能返回不准确)
  rs.AddNew '新建一行记录
  rs.Update '保存当前行被修改的记录
  rs.Delete '删除当前行
  rs.Close '关闭记录集
  
  4、Fields集合的一些属性的解释
  =============================
  '以下为简写,正常情况需要rs.Fileds.。。。但是Fields属于Recordset的一个默认集合,因此可以省略
  
  rs() '括号内可以是列名也可以是列的序号例如:rs("姓名")、rs(3) 都是是可以的
  
  rs(3).Name '返回列名
  rs(3).Type '返回列的类型
  rs(3).Value '返回当前行的值
  rs.Fields.Count '返回列数
  
  =====================================================================
  补充:
  
  ADO打开EXCEL示例
  
  Dim Conn As New ADODB.Connection
  Dim rs As New ADODB.Recordset
  Dim i As Integer
  Dim sql As String
  
  Private Sub Form_Load()
  On Error Resume Next
  strName = "f:\book.xls" 'EXCEL文件名
  strSheetName = "sheet1" 'EXCEL表名
  
  Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist SecurityInfo=False;Data Source=" & strName& ";Extended Properties='Excel 8.0;HDR=Yes'"'连接EXCEL文件
  
  sql = "select * from [" & strSheetName& "$]" '打开EXCEL表
  rs.Open sql, Conn, 3, 3
  
  MsgBox rs.RecordCount
  Do Until rs.EOF
   For i = 0 To rs.Fields.Count - 1
   List1.AddItem rs.Fields.Item(i).Name
   If Not IsNull(rs.Fields.Item(i).Value) Then
   List2.AddItem rs.Fields.Item(i).Value
   Else
   rs.Update
   rs.Fields.Item(i).Value = "peter" & i
   rs.Update
   End If
   Next i
  rs.MoveNext
  Loop
  End Sub

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值