一站式百度SEO排名优化!-找老刘博客 低投入,高转化,精益求精、一丝不苟:旨在提供更好的SEO服务!

首页>>SEO问题

合肥客户的优化站:Adodb打开数据库连接失败

首页 2019-11-11 SEO问题 1389 ℃Tags: Adodb打开数据库连接失败


双十一一大早,某长期合作的老客户网站,突然出现了报错:Adodb打开数据库连接失败,网站无法打开这还得了,赶紧检查服务器日志,发现是尽早6点才出现的问题,事情还在可控范围内,在未影响seo结果之前,加紧处理完即可。


合肥某搬家公司seo站:Adodb打开数据库连接失败

首先使用了备份的数据库文件替换,测试地址访问ok,一切正常,悬着的心放下一半。然鹅事情并没有想象中的那么简单,主域名访问依然报错,是什么道理呢?3分钟后,清除缓存主域名已经可以正常访问。


彻底解决方案:

数据库如果是sqlserver的,直接换一种连接要快得多 :

connstr="driver={SQL Server};server=localhost;database=vgcmis;uid=sa;pwd=lavend;"

1573442098881038.png


下面是VB使用ADODB操作数据库的常用方法


ADO常用方法

下面是我所掌握的使用ADO对数据库操作的一些常用方法,主要是提供给初学者作为参考,有不对的地方请指正。如有补充不胜荣幸


准备工作

========


Dim conn As New  ADODB.Connection  '创建一个 Connection 实例,在这里使用New等于将Dim和Set合并为一段代码执行

Dim rs As ADODB.Recordset    '创建一个 Recordset 实例,不使用New 是因为,经常需要重复使用Set,因此没必要在这里使用

Dim CnStr As String, Sql As String  '创建两个字符串变量分别存放两个集合的SQL语句代码段


1、装载数据库(不属于Recordset集合)

=============

Dim FileNamw$, DbIp$, DbName$, DbUser$, DbPw$

'以上5个字符串变量分别表示文件路径和文件名、数据库地址、数据库名、数据操作员用户名、操作员密码


FileName = App.Path & "'数据库名'"

DbIp = "数据库地址"

DbName = "数据库名"

DbUser = "数据操作员用户名"

DbPw = "操作员密码"

'以上变量根据数据库类型的不同而不同,有可能只需要1至两个变量


'1)连接Access数据库:

'-------------------

CnStr = "PROVIDER=microsoft.jet.oledb.3.51;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"


'其中:

'PASSWORD:      密码

'User ID:       用户号

'Data Source:   数据库名

'Persist Security Info:

'Provider:


'3)连接VF的DBF库:

'----------------

CnStr = "PROVIDER=MSDASQL.1;Persist Security Info=False;Driver={Microsoft Visual FoxPro Driver};UID=" & DbUser & ";SourceDB=" & FileName & 


";SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;"


'4)连接SQL的数据库

'------------------

CnStr = "PROVIDER=MSDataShape;Data PROVIDER=MSDASQL;uid=" & DbUser & ";pwd=" & DbPw & ";DRIVER=SQL Server;DATABASE=" & DbName & ";WSID=GQSOFT;SERVER=" & 


DbIP


'也可以使用这段简易代码 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  '这个方法用来关闭你所代开的表,如果不使用这个方法也可以,但是数据库仍然认为你在对标进行锁定,可造成数据库负担过重


3、对数据进行筛选和排序

=======================

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"  '对查询结果进行多维降序排列(速度奇慢,不推荐使用)


4、Recordset集合的常用属性方法

==============================

rs.BOF        '是否游标在最上边

rs.EOF        '是否游标在最下边

rs.RecordCount    '记录集的行数(如果使用像前类型的游标,可能返回不准确)

rs.AddNew    '新建一行记录

rs.Update    '保存当前行被修改的记录

rs.Delete    '删除当前行

rs.Close    '关闭记录集


5、Fields集合的一些属性的解释

=============================

'以下为简写,正常情况需要rs.Fileds.。。。但是Fields属于Recordset的一个默认集合,因此可以省略


rs()  '括号内可以是列名也可以是列的序号例如:rs("姓名")、rs(3) 都是是可以的


rs(3).Name  '返回列名

rs(3).Type  '返回列的类型

rs(3).Value '返回当前行的值

rs.Fields.Count '返回列数


搜索
分类
热门标签
  • 首页
  • 电话
  • QQ
  • 联系老刘手机
    1043025812
    联系老刘微信
    扫描微信二维码