怎样用vb把数据库(Access)压缩和修复

怎样用vb把数据库(Access)压缩和修复,第1张

以前使用

DAO

时,Microsoft

有提供

CompactDatabase

Method

来压缩

Microsoft

Access

文件,RepairDatabase

Method

来修复损坏的

Microsoft

Access

文件,。可是自从

ADO

出来之后,好像忘了提供相对的压缩及修复

Microsoft

Access

文件的功能。

现在

Microsoft

发现了这个问题了,也提供了解决方法,不过有版本上的限制!限制说明如下:

ActiveX

Data

Objects

(ADO),

version

2.1

Microsoft

OLE

DB

Provider

for

Jet,

version

4.0

这是

Microsoft

提出的

ADO

的延伸功能:Microsoft

Jet

OLE

DB

Provider

and

Replication

Objects

(JRO)

这个功能在

JET

OLE

DB

Provider

version

4.0

(Msjetoledb40.dll)

JRO

version

2.1

(Msjro.dll)

中第一次被提出!

这些必要的

DLL

文件在您安装了

MDAC

2.1

之后就有了,您可以在以下的网页中下载

MDAC

的最新版本!

Universal

Data

Access

Web

Site

在下载之前先到

VB6

中检查一下,【控件】【设定引用项目】中的

Microsoft

Jet

and

Replication

Objects

X.X

library

如果已经是

2.1

以上的版本,您就可以不用下载了!

1、新建一个新表单,选择功能表中的【控件】【设定引用项目】。

2、加入

Microsoft

Jet

and

Replication

Objects

X.X

library,其中

(

X.X

大于或等于

2.1

)。

3、在适当的地方加入以下的程序代码,记得要修改

data

source

的内容及目地文件的路径:

Dim

jro

As

jro.JetEngine

Set

jro

=

New

jro.JetEngine

jro.CompactDatabase

"Provider=Microsoft.Jet.OLEDB.4.0Data

Source=d:\

wind2.mdb",

_

'来源文件

DAO

3.60

之后,RepairDatabase

Method

已经无法使用了,以上的程序代码显示了

ADO

CompactDatabase

Method

的用法,而它也取代了

DAO

3.5

时的

RepairDatabase

method!

首先在master库中,新建存储过程

CREATE PROCEDURE p_compdb

@dbname sysname --要压缩的数据库

as

--1.清空日志

exec('DUMP TRANSACTION ['+@dbname+'] WITH NO_LOG')

--2.截断事务日志:

exec('BACKUP LOG ['+@dbname+'] WITH NO_LOG')

--3.收缩数据库文件(如果不压缩,数据库的文件不会减小

exec('DBCC SHRINKDATABASE(['+@dbname+'])')

--4.设置自动收缩

exec('EXEC sp_dboption '''+@dbname+''',''autoshrink'',''TRUE''')

GO

然后在VB中调用,参数是数据库名。

需要用访问master库的权限连接到master库上调用。

try this:

command.Execute("sp_dboption '"&数据库名 &"'")

这个写得还比较详细了,在此基础上补充如下:

Private Sub Command1_Click()

Dim cn As New ADODB.Connection '声明数据库连接对象cn

Dim rs As New ADODB.Recordset '声明记录集对象rs

Dim strsql As String, mypath As String, connstr As String 'strsql表示查询语句,mypath表示数据库路径,connstr表示访问数据库的语句

mypath = App.Path &"\study.mdb" '获取数据库的路径

connstr = "provider=microsoft.jet.oledb.4.0data source=" &mypath &"Persist Security Info=False" '连接数据库字符串配置信息

strsql = "Select * From userInformation Where userId='" &txtuser.Text &"'" '查询语句命令

cn.Open (connstr) '连接数据库

'rs.Open strsql, cn, 1, 1

rs.Open strsql, cn '执行查询命令,查询结果返回到rs记录集

'If rs.RecordCount = 0 Then

If rs.EOF = True And rs.BOF = True Then '当前记录集中没有记录

MsgBox "用户不存在!", , "提示" 'd出对话框,显示信息

rs.Close '关闭记录集

cn.Close '关闭数据库连接

ElseIf txtpassword.Text = rs("userPassword") And Combo1.Text = rs("shenfen") Then '记录集中有记录,并且当然记录的字段(用户密码:userPassword)等于窗体上文本框内容,下拉框选择内容等于字段 (身份:shenfen)

rs.Close '关闭记录集

cn.Close '关闭数据库连接

If Combo1.Text = "教师" Then '下拉框内容为“教师”

Form2.Show '打开窗体(Form2)

Unload Me '卸载当前窗体Form2

Else '下拉框内容不为“教师”,否则

Form3.Show '打开窗体(Form3)

Unload Me '卸载当前窗体Form3

End If

ElseIf Combo1.Text <>rs("shenfen") Then '下拉框选择内容不等于字段 (身份:shenfen)

rs.Close '关闭记录集

cn.Close '关闭数据库连接

MsgBox "请重新进行身份选择", "0", "提示" 'd出对话框,显示信息

Else

rs.Close '关闭记录集

cn.Close '关闭数据库连接

MsgBox "密码不对,请重新输入!", vbOKOnly + vbExclamation, "错误提示" 'd出对话框,显示信息

txtpassword.Text = "" '窗体文本输入控件(密码)内容设为空

txtpassword.SetFocus '设置控件焦点为当前可用。

End If

End Sub

Private Sub Command2_Click()

End

End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9938912.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存