数据库 是 sql server 2000 最好有完善关键代码
解决方案 »
- win7下使用时间控件
- ●[紧急]●使用WebBrowser内存占用实在太高了。有什么办法释放~?
- B/S问题(COM+组件问题或ACTIVE X)
- 一个用VB制作按键精灵的问题
- 用printform打印时,如何确定form中picturebox内图形的打印输出的位置(在线等待,马上结帖)
- 急,如何创建web站点,创建web虚拟目录及设置相关属性?高分相送。
- 动态加载控件后如何调用控件的方法或属性。用Controls.Add方法只能用控件的通用的属性或方法。
- 为什么我的VB6.0不能够在WinXP上安装?
- 关于字符串的问题
- 如何用编程方式建立和设置odbc
- 将数据输出到word文档形式,如何实现?
- 求解:如何连接FTP上的Access数据库和在已有数据库中新建表。
打开vb6,新建工程。添加两个按钮,一个image控件
注意:Access中的photo字段类型为OLE对象.
SqlServer中的photo字段类型为Image'** 引用 Microsoft ActiveX Data Objects 2.5 Library 及以上版本
‘2.5版本以下不支持Stream对象
Dim iConcstr As String
Dim iConc As ADODB.Connection
'保存文件到数据库中
Sub s_SaveFile()
Dim iStm As ADODB.Stream
Dim iRe As ADODB.Recordset
Dim iConcstr As String '读取文件到内容
Set iStm = New ADODB.Stream
With iStm
.Type = adTypeBinary '二进制模式
.Open
.LoadFromFile App.Path + "\test.jpg"
End With
'打开保存文件的表
Set iRe = New ADODB.Recordset
With iRe
.Open "select * from img", iConc, 1, 3
.AddNew '新增一条记录
.Fields("photo") = iStm.Read
.Update
End With
'完成后关闭对象
iRe.Close
iStm.Close
End Sub
Sub s_ReadFile()
Dim iStm As ADODB.Stream
Dim iRe As ADODB.Recordset
'打开表
Set iRe = New ADODB.Recordset
‘得到最新添加的纪录
iRe.Open "select top 1 * from img order by id desc", iConc, adOpenKeyset, adLockReadOnly
'保存到文件
Set iStm = New ADODB.Stream
With iStm
.Mode = adModeReadWrite
.Type = adTypeBinary
.Open
.Write iRe("photo")
‘这里注意了,如果当前目录下存在test1.jpg,会报一个文件写入失败的错误.
.SaveToFile App.Path & "\test1.jpg"
End With
Image1.Picture = LoadPicture(App.Path & "\test1.jpg")
'关闭对象
iRe.Close
iStm.Close
End Sub
Private Sub Command1_Click()
Call s_ReadFile
End Sub
Private Sub Command2_Click()
Call s_SaveFile
End Sub
Private Sub Form_Load()
'数据库连接字符串
iConcstr = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False" & _
";Data Source=F:\csdn_vb\database\保存图片\access图片\img.mdb"‘下面的语句是连接sqlserver数据库的.
‘iConcstr = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _
‘ "User ID=sa;Password=;Initial Catalog=test;Data Source=yang"
Set iConc = New ADODB.Connection
iConc.Open iConcstr
End Sub
Private Sub Form_Unload(Cancel As Integer)
iConc.Close
Set iConc = Nothing
End Sub
请求帮忙看一下这段图片存取的代码,另有问题请求解答,谢谢!
Public Function SaveFieldDataToFile(blobColumn As ADODB.Field, ByVal filename) As Boolean
On Error GoTo ErrorHandle
Dim FileNumber As Integer '文件号
Dim DataLen As Long '文件长度
Dim Chunks As Long '数据块数
Dim ChunkAry() As Byte '数据块数组
Dim ChunkSize As Long '数据块大小
Dim Fragment As Long '零碎数据大小
Dim lngI As Long '计数器 SaveFieldDataToFile = False
ChunkSize = 2048 '定义块大小为 2K
If IsNull(blobColumn) Then GoTo funcEnd
DataLen = blobColumn.ActualSize '获得图像大小
If DataLen < 8 Then GoTo funcEnd '图像大小小于8字节时认为不是图像信息 FileNumber = FreeFile '产生随机的文件号 Open filename For Binary Access Write As FileNumber '打开存放图像数据文件
Chunks = DataLen \ ChunkSize '数据块数
Fragment = DataLen Mod ChunkSize '零碎数据
'先读零碎数据
If Fragment > 0 Then
ReDim ChunkAry(Fragment - 1)
ChunkAry = blobColumn.GetChunk(Fragment)
Put FileNumber, , ChunkAry
End If
'读块数据
ReDim ChunkAry(ChunkSize - 1)
For lngI = 1 To Chunks
ChunkAry = blobColumn.GetChunk(ChunkSize)
Put FileNumber, , ChunkAry
Next lngI Close FileNumber '关闭文件
SaveFieldDataToFile = True
GoTo funcEnd
ErrorHandle:
SaveFieldDataToFile = False
MsgBox err.Description, vbCritical, "读图像数据出错!"
funcEnd:
End Function'Need Fix
'该函数的调用者不存在,可能在原设备数据录入中的"照片更新中"
Public Function PutFileDataToField(blobColumn As ADODB.Field, ByVal filename) As Boolean
On Error GoTo ErrorHandle
Dim FileNumber As Integer '文件号
Dim DataLen As Long '文件长度
Dim Chunks As Long '数据块数
Dim ChunkAry() As Byte '数据块数组
Dim ChunkSize As Long '数据块大小
Dim Fragment As Long '零碎数据大小
Dim lngI As Long '计数器
PutFileDataToField = False ChunkSize = 2048 '限制每次读取的块大小为 2K FileNumber = FreeFile '产生随机的文件号 Open filename For Binary Access Read As FileNumber '打开图像文件 DataLen = LOF(FileNumber) '获得文件长度 If IsNull(blobColumn) Then
Close FileNumber
GoTo funcEnd
End If If DataLen = 0 Then '文件长度为0
Close FileNumber
PutFileDataToField = True
GoTo funcEnd
End If Chunks = DataLen \ ChunkSize '数据块的个数
Fragment = DataLen Mod ChunkSize
If Fragment > 0 Then '先写零碎数据
ReDim ChunkAry(Fragment - 1)
Get FileNumber, , ChunkAry() '读出文件
blobColumn.AppendChunk ChunkAry '调用AppendChunk函数写数据
End If
ReDim ChunkAry(ChunkSize - 1) '为数据块开辟空间
For lngI = 1 To Chunks '循环读出所有数据块
Get FileNumber, , ChunkAry() '读出一块数据
blobColumn.AppendChunk ChunkAry '在数据库中增加数据块
Next lngI
Close FileNumber '关闭文件
PutFileDataToField = True
GoTo funcEndErrorHandle:
PutFileDataToField = False
MsgBox err.Description, vbCritical, "写图像数据出错!"
funcEnd:
End Function
调用1楼的s_ReadFile,图片加载到image里,字符串连接改为连sql数据库的