我说一个最实用的方法。直接drop表,然后建立。
解决方案 »
- 關於web開發,大家不妨談談
- messageDlg的问题!
- 如何读取注册表的默认项的数据???我的代码如下:
- 关于串口通讯中流量控制问题?
- 如何把一个ActiveForm充满IE的窗口?
- 如何将数组内容显示,比如showmessage,代码怎么写?
- 如何删除adotable中的所有记录?急!!!
- 在Dll中如何操作数据库?我在Dll中建了个DM,放上ADOConnection和ADOCommand,然后...内详
- 有什么好的方法
- 帮我看看这段小代码,感觉不知如何下手
- 谁用过EStringGrid,它的ColumnProperties[index].locked如何用?
- 请问怎么样richedit中的内容,自动翻页并翻到最后一页后自动循环回第一页
所以程序中需要提供数据库压缩功能~~
好多的~~~
var db : OLEVariant;
tempFile : String;
begin
result := true;
try
screen.cursor := crSQLWait ;
db := GetDAO_Object ;
result := false;
try
tempFile := ExtractFilePath (mdbFilename) + '\msaTemp.mdb';
db.CompactDataBase(mdbFIleName,tempFile);
DeleteFile(mdbFileName);
RenameFile (tempFile,mdbFileName);
Result := true;
Except on EOLEexception do
Result := false;
end
finally
db := Unassigned ;
screen.cursor := crDefault ;
end;end;随便搜索一下~~到处都是~~
var db : OLEVariant;
tempFile : String;
begin
result := true;
try
screen.cursor := crSQLWait ;
db:=CoDBEngine.Create;
result := false;
try
tempFile := ExtractFilePath (mdbFilename) + '\msaTemp.mdb';
db.CompactDataBase(mdbFIleName,tempFile);
DeleteFile(mdbFileName);
RenameFile (tempFile,mdbFileName);
Result := true;
Except on EOLEexception do
Result := false;
end
finally
db := Unassigned ;
screen.cursor := crDefault ;
end;end;那个只不过是给你一个参考~~没有必要全部照搬~~领会意思是最重要的~~
var
db:_DBEngine;
var db:_DBEngine;
tempFile : String;
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
var db:_DBEngine;
temppath:string;
sourcedb,destdb:string;
begin
db:=CoDBEngine.Create;
temppath:=Extractfilepath(application.ExeName);
sourcedb:=temppath+'data.mdb';
destdb:=temppath+'temp.mdb';
db.CompactDatabase(sourcedb,destdb,'',0,'');
end;可在关闭的时候报告OLE error 80040112:(
try
db.CompactDatabase(SourceFileName,TargetFileName,'',0,'');
db.FreeLocks;
except
Exit;
end;
DeleteFile(SourceFileName);
RenameFile(TargetFileName,SourceFileName);
var
db:DBEngine;
temppath:string;
sourcedb,destdb:string;
begin
db:=CoDBEngine.Create;
temppath:=Extractfilepath(application.ExeName);
sourcedb:=temppath+'data.mdb';
destdb:=temppath+'temp.mdb';
db.CompactDatabase(sourcedb,destdb,'',0,'');
end;
var
db:DBEngine;
temppath:string;
sourcedb,destdb:string;
begin
db:=CoDBEngine.Create;
temppath:=Extractfilepath(application.ExeName);
sourcedb:=temppath+'data.mdb';
destdb:=temppath+'temp.mdb';
db.CompactDatabase(sourcedb,destdb,'',0,'');
end;
选择压缩数据表就可以真正的清空了
用DELPHI可以压缩,但是不是必须要有相应的ADO动态库?这样安装程序太大了!
谁有好办法?
????
我原来打算写在线维护的。后来发现这样压缩要独占数据库的。:(
<% Const Jet_Conn_Partial = "Provider=Microsoft.Jet.OLEDB.4.0; Data source="
Dim strDatabase, strFolder, strFileName'#################################################
'# Edit the following two lines
'# Define the full path to where your database is
strFolder = "e:\wwwroot\2\"
'# Enter the name of the database
strDatabase = "dv3sr2.mdb"
'# Stop editing here
'##################################################Private Sub dbCompact(strDBFileName)
Dim SourceConn
Dim DestConn
Dim oJetEngine
Dim oFSOSourceConn = Jet_Conn_Partial & strFolder & strDatabase
DestConn = Jet_Conn_Partial & strFolder & "Temp" & strDatabaseSet oFSO = Server.CreateObject("Scripting.FileSystemObject")
Set oJetEngine = Server.CreateObject("JRO.JetEngine")With oFSO If Not .FileExists(strFolder & strDatabase) Then
Response.Write ("Not Found: " & strFolder & strDatabase)
Stop
Else
If .FileExists(strFolder & "Temp" & strDatabase) Then
Response.Write ("Something went wrong last time " _
& "Deleting old database... Please try again")
.DeleteFile (strFolder & "Temp" & strDatabase)
End If
End If
End WithWith oJetEngine
.CompactDatabase SourceConn, DestConn
End WithoFSO.DeleteFile strFolder & strDatabase
oFSO.MoveFile strFolder & "Temp" _
& strDatabase, strFolder& strDatabaseSet oFSO = Nothing
Set oJetEngine = Nothing
End SubPrivate Sub dbList()
Dim oFolders
Set oFolders = Server.CreateObject("Scripting.FileSystemObject")
Response.Write ("<Select Name=""DBFileName"">")
For Each Item In oFolders.GetFolder(strFolder).Files
If LCase(Right(Item, 4)) = ".mdb" Then
Response.Write ("<Option Value=""" & Replace(Item, strFolder, "") _
& """>" & Replace(Item, strFolder, "") & "</Option>")
End If
Next
Response.Write ("</Select>")Set oFolders = Nothing
End Sub
%>
<%
' Compact database and tell the user the database is optimized
Select Case Request.form("cmd")
Case "Compact"
dbCompact Request.form("DBFileName")
Response.Write ("Database " & Request.form("DBFileName") & " is optimized.")
End Select
%><p><font size="4">Compact and repair database</font></p>
<form method="POST" action="">
<p><%dbList%><input type="submit" value="Compact" name="cmd"></p>
</form>
可以试试以下方法:使用TRUNCATE TABLE ,因为它是一次删除含有多个表行的多个信息页,而DELETE TABLE 语句依次只删除各个行.使用TRUNCATE TABLE删除的表行,不能恢复;她不象DELETE TABLE,不保留被删除行的备份!
安全又省气
但要小心
打错表名,哭都没办法了
小心,功能真的很强劲