热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

写数据到数据库时,为什么ACCESS数据库文件会变这么大?

写数据到数据库时,为什么ACCESS数据库文件会变这么大?我是每次都删除表里的数据,再插入新的数据,最大的表里也就一万多行,可是每次操作,数据库文件都会增加好几M,甚至十几兆,我用的是ACCESS2
写数据到数据库时,为什么ACCESS数据库文件会变这么大?我是每次都删除表里的数据,再插入新的数据,最大的表里也就一万多行,可是每次操作,数据库文件都会增加好几M,甚至十几兆,我用的是ACCESS 2000,下面是代码,请教各位老师:
//写数据到数据库
System.Data.OleDb.OleDbConnection sqlcOnn=new System.Data.OleDb.OleDbConnection(DBControl.connstr);
System.Data.OleDb.OleDbCommand sqlcmd=new System.Data.OleDb.OleDbCommand();
sqlcmd.Connection =sqlconn;
sqlconn.Open();
//清除表内容
strSql="delete from "+strCodeVer[k].ToString();
sqlcmd.CommandText =strSql;
sqlcmd.ExecuteNonQuery();
//插入数据
for (int m=0;m strSql="insert into "+strCodeVer[k].ToString()+" values("+codeList[k][m].ToString()+")";
sqlcmd.CommandText =strSql;
sqlcmd.ExecuteNonQuery();
}
sqlcmd.Dispose();
sqlconn.Close();

刚刚听说每次操作完都要压缩数据库文件(创建临时文件名 ,压缩数据库文件 ,删除原来的数据库文件 ,拷贝刚刚压缩过临时数据库文件至原来位置 ),请问还有别的办法吗?因为我的数据库文件可能正在被别的进程访问,不能删除,各位大哥,多谢指导哦

10 个解决方案

#1


数据库日志记录了你的插入和删除信息 同时自动增长字段也变化了

#2


还有索引的整理之类的 不过增加那么多可能也有问题

#3


学习..

#4


压缩数据库
先引用COM  Microsoft Jet and Replication Objects X.X library 

string strS="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\\my.mdb;";//需要被压缩的文件
    string strT="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\\my_2.mdb;";//压缩后生成的新文件
    
    JRO.JetEngine jet=new JRO.JetEngineClass();
    jet.CompactDatabase(strS,strT);

#5


需要设置退出时自动压缩,步骤如下:
菜单 -> 工具 -> 选项 -> 常规关闭时压缩  -> 前面打上勾

#6


haike(小虾米) :程序里不能压缩数据库,因为数据库文件正在被其它的进程使用
sfanpu(Erick Shuai) :不行,因为我更本就没有打开access文件,是程序访问
还有其它的办法吗?

#7


手工去压缩你的ACCESS数据库~~~~
要是不允许压缩,就的先关你的程序~~~~再压缩!

#8


access就是这样,每次添了再删除,删除后再添都会空间变大.
我的数据库只有几M, 所以我每次都是手工压缩.帮你up

#9


数据大就用sql吧.

#10


这有一个资料,不过也是以独占的方式压缩资料的。:(
==================================================================
源自 AccessXP 帮助:
CompactRepair 方法
请参阅 应用于 示例 特性 
压缩和修复指定的数据库 (.mdb) 或 Microsoft Access 项目 (.adp) 文件。返回 Boolean 型值;如果处理成功,返回 True。

expression.CompactRepair(SourceFile, DestinationFile, LogFile)

expression   必需。返回“Applies To”列表中的一个对象的表达式。

SourceFile  String 型,必需。代表要压缩和修复的数据库或项目文件的完整路径和文件名。

DestinationFile  String 型,必需。完整的路径和文件名,代表所返回文件的保存位置。

LogFile  Boolean 型,可选。如果在目标目录中创建一个日志文件用于记录在源文件中检测到的损坏,则为 True。只有在源文件中检测到损坏时,才创建日志文件。如果 LogFile 为 False 或省略,就不创建日志文件,即使在源文件中检测到损坏也是如此。

说明
源文件不可以是当前数据库,也不能被其他用户打开,因为调用该方法将会以独占方式打开源文件。

示例
下面的示例将压缩和修复一个数据库,如果在源文件中检测到损坏,则会创建一个日志文件,并根据恢复是否成功而返回一个 Boolean 值。为使该示例运行,必须将源文件和目标文件的路径和文件名传给它。 

Function RepairDatabase(strSource As String, _
        strDestination As String) As Boolean
        ' Input values: the paths and file names of
        ' the source and destination files.

    ' Trap for errors.
    On Error GoTo error_handler

    ' Compact and repair the database. Use the return value of
    ' the CompactRepair method to determine if the file was
    ' successfully compacted.
    RepairDatabase = _
        Application.CompactRepair( _
        LogFile:=True, _
        SourceFile:=strSource, _
        DestinationFile:=strDestination)

    ' Reset the error trap and exit the function.
    On Error GoTo 0
    Exit Function

' Return False if an error occurs.
error_handler:
    RepairDatabase = False

End Function

推荐阅读
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文介绍了自动化测试专家Elfriede Dustin在2008年的文章中讨论了自动化测试项目失败的原因。同时,引用了IDT在2007年进行的一次软件自动化测试的研究调查结果,调查显示很多公司认为自动化测试很有用,但很少有公司成功实施。调查结果表明,缺乏资源是导致自动化测试失败的主要原因,其中37%的人认为缺乏时间。 ... [详细]
author-avatar
潘昀湖5159
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有