⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 如何用sql存储图片,再用vb调用这些图片.txt

📁 以电子书的形式收集了VB一些常见问题解决方法,可以很方便的查找自己需要解决的问题.对一些VB初学者很用.
💻 TXT
字号:
注:写图片文件到数据库 
    Col为栏位名,ImgFile为要写到数据库的图片文件名,BockSize为每次写多少字节,缺省为每次写8K字节到数据库 
    Public Sub WriteDB(Col As ADODB.Field, ImgFile As String, Optional BlockSize As Long=8192) 
     Dim byteData() As Byte, FileLength As Long, NumBlocks As Integer 
     Dim LeftOver As Long, SourceFileNum As Integer, i As Integer 
     
     SourceFileNum = FreeFile 
     Open ImgFile For Binary As SourceFileNum 
     FileLength = LOF(SourceFileNum) 
     If FileLength > 50 Then 
     NumBlocks = FileLength \ BlockSize 
     LeftOver = FileLength Mod BlockSize 
     
     ReDim byteData(LeftOver) 
     Get SourceFileNum, , byteData() 
     Col.AppendChunk byteData() 
     ReDim byteData(BlockSize) 
     For i = 1 To NumBlocks 
     Get SourceFileNum, , byteData() 
     Col.AppendChunk byteData() 
     Next 
     End If 
     Close SourceFileNum 
    End Sub 
     
     
    ImgFile为从数据库读出数据写到磁盘的文件名,BlockSize为每次向文件写多少个字节,缺省为8K字节,当ReadDB=True,得到图片文件後,可以用LoadPicter(图片文件名)显示图片到PictureBox或Image框中. 
    Public Function ReadDB(Col As ADODB.Field, ImgFile As String,Optional BlockSize As Long=8192) As Boolean 
     Dim byteData() As Byte, NumBlocks As Integer 
     Dim LeftOver As Long, DestFileNum As Integer, i As Integer 
     Dim ColSize As Long 
     
     On Error GoTo ErrRead 
     ReadDB = False 
     
     'If Dir(ImgFile) <> "" Then Kill ImgFile 
     
     DestFileNum = FreeFile 
     Open ImgFile For Binary As #DestFileNum 
     
     ColSize = Col.ActualSize 
     NumBlocks = ColSize \ BlockSize 
     LeftOver = ColSize Mod BlockSize 
     
     ReDim byteData(LeftOver) 
     byteData() = Col.GetChunk(LeftOver) 
     Put DestFileNum, , byteData() 
     ReDim byteData(BlockSize) 
     For i = 1 To NumBlocks 
     byteData() = Col.GetChunk(BlockSize) 
     Put #DestFileNum, , byteData() 
     Next 
     If LOF(DestFileNum) > 200 Then ReadDB = True 
     Close #DestFileNum 
     Exit Function 
     
    ErrRead: 
     MsgBox "READ PICTURE ERR:" & Err.Number 
     ReadDB = False 
     Exit Function 
    End Function//如果ReadDB=False则写文件失败。 
    还有用此纯代码读取图片时,在代码调试中不会出现错误,在运行时如果快速浏览带有图片的记录时,会出现莫名其妙的程序死机.如上述代码,我都用了错误控制技术,但还是出现。 
    我用的是VB6.0 ADO方法 + SQL SERVER 7.0(都是英文版)C/S架构。
<END>
    VB是0 BASE的数组,a(1)实际有两个元素,a(0),a(1),将 
    ReDim byteData(LeftOver) 
    改为ReDim byteData(LeftOver-1) 
    并应该判断leftover是否为零。 
<END>    
建立连接 Adodc, 用Image 绑定该字段。
<END> 
可以试试用SQL Server来编写一个存储过程,通过参数传递image数据类型,并且可以在存储过程中将日志关闭,避免日志溢出,最后在vb里调用存储过程,就可以了。具体细节可以看vb和sqlserver的帮助文件。 
<END>
     
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -