VB 写的二进制文件读写数据库操作模块
2005-07-18 09:08
603 查看
'/-----------------------------------------------------------------------
'/ Desc:将文件以二进制流的形式写入数据库中
'/ Author:By Bytesoon
'/-----------------------------------------------------------------------
Public dbConn As ADODB.Connection
Public curImgPath As String
' 创建并打开数据库
Public Function OpenDB(dbServer As String, dbName As String) As Boolean
Err.Clear
OpenDB = False
'创建数据库连接对象
Set dbConn = New ADODB.Connection
'设置为可以读写操作
dbConn.Mode = adModeReadWrite
'访问SQLserver
dbConn.Provider = "sqloledb"
On Error Resume Next
'打开数据库连接
dbConn.Open "Data Source=" & dbServer & ";Initial Catalog=" & dbName & ";Persist Security Info=false;User ID=sa"
If Err.Number <> 0 Then
MsgBox "Connect failed"
Exit Function
End If
OpenDB = True
End Function
' 关闭数据库连接并释放资源
Public Sub CloseDB(Conn As ADODB.Connection)
If Conn Is Nothing Then
If Conn.State = 1 Then
Conn.Close
Set Conn = Nothing
End If
End If
End Sub
' 将给定路径下的文件写入到数据库
Public Function SaveImgToDB(Conn As ADODB.Connection, tableName As String, fieldName As String, ImgPath As String) As Boolean
SaveImgToDB = False
' 先判断数据库是否已经打开
If Conn.State = 1 Then
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
' 打开表记录
rs.Open "select [" & fieldName & "] from [" & tableName & "]", Conn, 1, 3
' 打开流对象,并装载文件
Dim os As ADODB.Stream
Set os = New ADODB.Stream
os.Mode = 3
os.Type = 1
os.Open
os.LoadFromFile ImgPath
' 将文件流写入指定字段中
If Not (rs.EOF Or rs.BOF) Then
rs.MoveFirst
rs.Fields(0).AppendChunk os.Read()
rs.Update
End If
' 关闭数据记录集对象
rs.Close
Set rs = Nothing
' 关闭流对象
os.Close
Set os = Nothing
Else
MsgBox "database not connected"
Exit Function
End If
SaveImgToDB = True
End Function
' 从数据库中获得文件
Public Function GetFileFromDB(Conn As ADODB.Connection, tableName As String, fieldName As String, saveToPath As String) As Boolean
GetFileFromDB = False
' 先判断数据库是否已经打开
If Conn.State = 1 Then
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
' 打开表记录
rs.Open "select [" & fieldName & "] from [" & tableName & "]", Conn, 1, 3
' 打开流对象
Dim os As ADODB.Stream
Set os = New ADODB.Stream
os.Mode = 3
os.Type = 1
' 从指定字段中读取文件流并保存文件
If Not (rs.EOF Or rs.BOF) Then
rs.MoveFirst
os.Flush
os.Open
os.Write rs(0).GetChunk(rs(0).ActualSize)
os.SaveToFile saveToPath, adSaveCreateOverWrite
End If
' 关闭数据记录集对象
rs.Close
Set rs = Nothing
' 关闭流对象
os.Close
Set os = Nothing
Else
MsgBox "database not connected"
Exit Function
End If
GetFileFromDB = True
End Function
'/ Desc:将文件以二进制流的形式写入数据库中
'/ Author:By Bytesoon
'/-----------------------------------------------------------------------
Public dbConn As ADODB.Connection
Public curImgPath As String
' 创建并打开数据库
Public Function OpenDB(dbServer As String, dbName As String) As Boolean
Err.Clear
OpenDB = False
'创建数据库连接对象
Set dbConn = New ADODB.Connection
'设置为可以读写操作
dbConn.Mode = adModeReadWrite
'访问SQLserver
dbConn.Provider = "sqloledb"
On Error Resume Next
'打开数据库连接
dbConn.Open "Data Source=" & dbServer & ";Initial Catalog=" & dbName & ";Persist Security Info=false;User ID=sa"
If Err.Number <> 0 Then
MsgBox "Connect failed"
Exit Function
End If
OpenDB = True
End Function
' 关闭数据库连接并释放资源
Public Sub CloseDB(Conn As ADODB.Connection)
If Conn Is Nothing Then
If Conn.State = 1 Then
Conn.Close
Set Conn = Nothing
End If
End If
End Sub
' 将给定路径下的文件写入到数据库
Public Function SaveImgToDB(Conn As ADODB.Connection, tableName As String, fieldName As String, ImgPath As String) As Boolean
SaveImgToDB = False
' 先判断数据库是否已经打开
If Conn.State = 1 Then
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
' 打开表记录
rs.Open "select [" & fieldName & "] from [" & tableName & "]", Conn, 1, 3
' 打开流对象,并装载文件
Dim os As ADODB.Stream
Set os = New ADODB.Stream
os.Mode = 3
os.Type = 1
os.Open
os.LoadFromFile ImgPath
' 将文件流写入指定字段中
If Not (rs.EOF Or rs.BOF) Then
rs.MoveFirst
rs.Fields(0).AppendChunk os.Read()
rs.Update
End If
' 关闭数据记录集对象
rs.Close
Set rs = Nothing
' 关闭流对象
os.Close
Set os = Nothing
Else
MsgBox "database not connected"
Exit Function
End If
SaveImgToDB = True
End Function
' 从数据库中获得文件
Public Function GetFileFromDB(Conn As ADODB.Connection, tableName As String, fieldName As String, saveToPath As String) As Boolean
GetFileFromDB = False
' 先判断数据库是否已经打开
If Conn.State = 1 Then
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
' 打开表记录
rs.Open "select [" & fieldName & "] from [" & tableName & "]", Conn, 1, 3
' 打开流对象
Dim os As ADODB.Stream
Set os = New ADODB.Stream
os.Mode = 3
os.Type = 1
' 从指定字段中读取文件流并保存文件
If Not (rs.EOF Or rs.BOF) Then
rs.MoveFirst
os.Flush
os.Open
os.Write rs(0).GetChunk(rs(0).ActualSize)
os.SaveToFile saveToPath, adSaveCreateOverWrite
End If
' 关闭数据记录集对象
rs.Close
Set rs = Nothing
' 关闭流对象
os.Close
Set os = Nothing
Else
MsgBox "database not connected"
Exit Function
End If
GetFileFromDB = True
End Function
相关文章推荐
- [VB.NET源码]文件读写与数据库操作示例
- Python中xlrd、xlwt、win32com模块对xls文件的读写操作
- 【C/C++学院】0826-文件重定向/键盘输入流/屏幕输出流/字符串输入输出/文件读写简单操作/字符文件读写二进制与文本差别/get与getline挖掘数据/二进制与文本差别/随机位置/多线程初级
- QT sqlite3数据库读取、容器操作、文件读写——学习笔记
- 如何将vb中的文件操作和数据库操作完美结合在一起啊?
- node.js 使用fs模块对系统文件及目录进行读写操作
- Python 数据处理扩展包: pandas 模块的DataFrame介绍(读写数据库的操作)
- vb.net 教程 4-9 二进制文件读写 3
- node.js基于fs模块对系统文件及目录进行读写操作的方法详解
- Python基础操作 文件的读写 异常模块 类面向对象 时间日历
- 文件部分-----(4)二进制文件读写操作
- 顺序文件,随机文件,二进制文件操作(vb)
- node.js的fs核心模块读写文件操作 -----由浅入深
- 基于node.js的fs核心模块读写文件操作(实例讲解)
- java 文件读写操作应用模块【工具包系列】
- VB ADO 用二进制方式来读写文件 入数据库 __________请参考(把文件(包括图片)存入数据库)
- 操作、压缩MDB文件;使用ADO读写Mysql数据库;建立数据库和表的VBS脚本代码(2013-08-26 11:39:34)
- c文件操作-二进制文件读写
- Java读写二进制文件操作
- Java 二进制文件读写操作