易截截图软件、单文件、免安装、纯绿色、仅160KB

ACCESS数据库存储大批量采集信息的问题

由于工作需要,使用ACCESS数据库存储港口周围AIS设备接收到的船舶数据。由于在全国很多港口有采集点,因此,数据量很大,每三分钟存储一次数据的话,那么一次将有2000多新的船位数据。这些数据入库后,数据库文件大小将新增1M到2M左右。根据这个频率,一个小时数据库文件将增加40M,一天就是960M。
为了提高数据库效率,我对数据库中存储的船舶数据进行定时删除,最多保留30万条记录。但是ACCESS中执行delete后,并没有在空间上减少,而只是减少了表中的数据量,这样,就达不到数据库文件变小的要求。
为了解决这个问题,从网上找到了通过写代码实现数据库文件压缩的代码。通过压缩可以释放delete后占用的空间。
实际的代码如下:
============================================
BOOL CPetrelProView::CompactDatabase()
{
 WriteLog("===开始数据库压缩===","COMPDB");
 //::CoInitialize(NULL);  
 CString sDBFilePathName = GetModulePath() + "ShipSurvey.mdb";//数据库文件
 CString sDstDBFilePathName = GetModulePath() + "ShipSurvey_back.mdb";//临时文件
 try
 {
  ::DeleteFile(sDstDBFilePathName);//删除已有的临时文件
  CFile::Rename(sDBFilePathName,sDstDBFilePathName);//将当前库文件改名为临时文件
 }
 catch(...)
 {
  WriteLog("文件改名失败。","COMPDB");
  return FALSE;
 }
 IJetEnginePtr jet(__uuidof(JetEngine));
 BOOL bOK = TRUE;
 try
 {
  //压缩临时文件为当前文件
  CString sSrc;
  sSrc.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Database Password=",sDstDBFilePathName);
  CString sDst;
  sDst.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Engine Type=5;Jet OLEDB:Database Password=",sDBFilePathName);
  long lResult = jet->CompactDatabase(_bstr_t(sSrc),_bstr_t(sDst));
  jet.Release();  
  //::CoUninitialize(); 
  if(lResult == S_OK)
  {
   WriteLog("数据库压缩完成。","COMPDB");
   WIN32_FILE_ATTR


相关文档:

asp连接access,出现0x80004005,未指定的错误


asp连接access,出现0x80004005,未指定的错误
asp来连接access数据库
本地测试发现,静态页可以打开.
和数据库建立链接的代码conn.open connstr 行出错,但是以前测试湿可以通过的.
在网上找了找解决办法,例如: 给用户加权限,更改iis设置.但是还是不行.
继续找,找到一篇文章,说是要修改c:\windows\temp 权限的。
......

DELPHI中操作ACCESS数据库

DELPHI中操作ACCESS数据库(建立.mdb文件,压缩数据库)

以下代码在WIN2K,D6,MDAC2.6下测试通过,

编译好的程序在WIN98第二版无ACCESS环境下运行成功.







//声明连接字符串

Const

SConnectionString      
= 'Provider=M ......

access 中的文本到数据类型的转换

用Cdbl()试试
CDbl(str)   -->   双精度
CInt(str)   -->   整型
CLng(str)   -->   长整型
CSng(str)   -->   单精度
CDate(str)   -->   日期型 ......

C#中使用DataTable显示Access数据库中文件列表


private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
             this.comboBox2.Items.Clear();
            switch(this.comboBox1.SelectedIndex)
       ......

asp连接ACCESS数据库--未指定错误解决方法


今天把以前做的ASP网站放到IIS里面 突然出现数据库连接错误 输出来为未指定错误 郁闷!以前还是好好的 自己学C#的 对ASP不是非常了解 在网上查了一下 有银多原因 最大的可能是驱动错误,但是我试了我做的asp.ne的网站运行的好好的 应该不是驱动的问题 找了半天终于找到一个修改temp的权限 最终才解决 
修改 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号