問題: 有個問題困擾我很長時間了 access資料庫操作 當通路.mdb檔案會出現一個.ldb鎖死檔案 我想用代碼删除.mdb檔案 可是操作不了 提示被另一個程式調用
c#做法類似
Dim SaveFile As String = "F:test.mdb"
Dim SaveFileName As String = SaveFile
Dim Cat As New ADOX.Catalog
Cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + SaveFile + ";")
Dim tbl As New ADOX.Table()
tbl.ParentCatalog = Cat
tbl.Name = "Table1"
'增加字段
tbl.Columns.Append("id", ADOX.DataTypeEnum.adInteger)
tbl.Columns.Append("工況", ADOX.DataTypeEnum.adVarWChar, 255)
tbl.Columns.Append("船舶運動", ADOX.DataTypeEnum.adVarWChar, 255)
tbl.Columns.Append("縱蕩加速度", ADOX.DataTypeEnum.adVarWChar, 255)
tbl.Columns.Append("橫蕩加速度", ADOX.DataTypeEnum.adVarWChar, 255)
tbl.Columns.Append("垂蕩加速度", ADOX.DataTypeEnum.adVarWChar, 255)
tbl.Columns.Append("測試", ADOX.DataTypeEnum.adVarWChar, 255)
tbl.Columns.Append("測試2", ADOX.DataTypeEnum.adVarBinary)
'主鍵
tbl.Columns("id").Properties("autoincrement").Value = True
tbl.Keys.Append("PrimaryKey", ADOX.KeyTypeEnum.adKeyPrimary, "id")
Cat.Tables.Append(tbl)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''寫入ACCESS資料庫
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim ConnectionStr As String = "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & SaveFile
Dim myConn As New OleDbConnection
myConn.ConnectionString = ConnectionStr
Dim sqlString As String
Dim myCmd As OleDb.OleDbCommand = Nothing
myConn.Open()
sqlString = "INSERT INTO Table1 (工況,船舶運動,縱蕩加速度,橫蕩加速度,垂蕩加速度,測試,測試2) "
sqlString = sqlString + vbCrLf + "VALUES(@工況,@船舶運動,@縱蕩加速度,@橫蕩加速度,@垂蕩加速度,@測試,@測試2)"
For i As Integer = 1 To 200
myCmd = New OleDbCommand(sqlString, myConn)
myCmd.Parameters.AddWithValue("@工況", "滿載")
myCmd.Parameters.AddWithValue("@船舶運動", "縱搖")
myCmd.Parameters.AddWithValue("@縱蕩加速度", i)
myCmd.Parameters.AddWithValue("@橫蕩加速度", i)
myCmd.Parameters.AddWithValue("@垂蕩加速度", i)
myCmd.Parameters.AddWithValue("@測試", i)
myCmd.Parameters.AddWithValue("@測試2", i * i)
myCmd.ExecuteNonQuery()
Next
myCmd.Dispose()
myCmd = Nothing
myConn.Close()
myConn.Dispose()
myConn = Nothing
'釋放ldb檔案的關鍵
Cat.ActiveConnection.Close()
System.Runtime.InteropServices.Marshal.ReleaseComObject(tbl)
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(tbl)
System.Runtime.InteropServices.Marshal.ReleaseComObject(Cat)
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(Cat)
Cat = Nothing
GC.WaitForPendingFinalizers()
GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
If My.Computer.FileSystem.FileExists(SaveFile) = True Then
My.Computer.FileSystem.DeleteFile(SaveFile)
End If
http://topic.csdn.net/u/20120528/16/1638f17f-9839-45d5-8427-5b30586bce94.html?seed=1172642860&r=78710267#r_78710267