| Сохранение файла в БД и получение его обратно из БД |
|
Данный пример показывает как можно сохранить двоичный файл (*.EXE, Документ MS Word и т.п.) в БД и, затем, загрузить его обратно из БД. В примере используется ADO, поэтому для работы примеру потребуется указать Reference на Microsoft Active Data Objects. Тип поля БД, в которое будет сохраняться файл, должен быть BINARY (в MS Access - OLE OBJECT). Public Function SaveFileToDB(ByVal FileName As String, RS As Object, FieldName As String) As Boolean Dim iFileNum As Integer Dim lFileLength As Long Dim abBytes() As Byte Dim iCtr As Integer On Error GoTo ErrorHandler If Dir(FileName) = "" Then Exit Function If Not TypeOf RS Is ADODB.Recordset Then Exit Function 'считать файл в массив iFileNum = FreeFile Open FileName For Binary Access Read As #iFileNum lFileLength = LOF(iFileNum) ReDim abBytes(lFileLength) Get #iFileNum, , abBytes() 'поместить содержимое массива в БД RS.Fields(FieldName).AppendChunk abBytes() Close #iFileNum SaveFileToDB = True ErrorHandler: End Function Public Function LoadFileFromDB(FileName As String, _ RS As Object, FieldName As String) As Boolean Dim iFileNum As Integer Dim lFileLength As Long Dim abBytes() As Byte Dim iCtr As Integer On Error GoTo ErrorHandler If Not TypeOf RS Is ADODB.Recordset Then Exit Function iFileNum = FreeFile Open FileName For Binary As #iFileNum lFileLength = LenB(RS(FieldName)) abBytes = RS(FieldName).GetChunk(lFileLength) Put #iFileNum, , abBytes() Close #iFileNum LoadFileFromDB = True ErrorHandler: End Function '----------------------- 'Пример использования #1 '----------------------- Dim sConn As String Dim oConn As New ADODB.Connection Dim oRs As New ADODB.Recordset sConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyDb.MDB;Persist Security Info=False" oConn.Open sConn oRs.Open "SELECT * FROM MYTABLE", oConn, adOpenKeyset, adLockOptimistic oRs.AddNew SaveFileToDB "C:\MyDocuments\MyDoc.Doc", oRs, "MyFieldName" oRs.Update oRs.Close '----------------------- 'Пример использования #2 '----------------------- Dim sConn As String Dim oConn As New ADODB.Connection Dim oRs As New ADODB.Recordset sConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyDb.MDB;Persist Security Info=False" oConn.Open sConn oRs.Open "SELECT * FROM MyTable", oConn, adOpenKeyset, adLockOptimistic LoadFileFromDB "C:\MyDocuments\MyDoc.Doc", oRs, "MyFieldName" oRs.Close Источник: http://www.relib.com/code.asp?id=444 |