能不能直接用SQL语句Insert into插入OLE对象类型(二进制数据)的字段数据?
不用流,也不用.AppendChunk,直接用SQL语句可不可以!如可以怎么用! 问题点数:50、回复次数:8Top
1 楼Modest(塞北雪貂)·(偶最欣赏楼主的分)回复于 2006-03-09 16:42:48 得分 0
数据量小的话可以直接转换成文本后插入Top
2 楼sxslyy(孤松傲雪)回复于 2006-03-09 16:51:10 得分 0
要插入的是图片,如需要转换,将如何转换呀!Top
3 楼Modest(塞北雪貂)·(偶最欣赏楼主的分)回复于 2006-03-09 18:50:15 得分 0
转换的方法很多,比如BASE64。
但是这样得不偿失,性能下降很多。Top
4 楼province_(雍昊)回复于 2006-03-09 18:55:26 得分 10
否则开发商为什么要提供STREAM对象,APPENDCHUNK方法呢?Top
5 楼faysky2(出来混,迟早是要还嘀)回复于 2006-03-09 18:56:52 得分 20
不用流,也不用.AppendChunk
------------------------------
那就用二进制方式来读写文件,请参考(把文件(包括图片)存入数据库):
Dim cn As New ADODB.Connection,rs As New ADODB.Recordset
Private Sub Form_Load()
cn.CursorLocation = adUseClient
'这里给的是sql库的连接,具体的数据库连接请自己改过来,如果是Access库,只改数据库的连接即可
cn.Open "Provider=SQLOLEDB.1;Password=;Persist Security Info=False;User ID=sa;Initial Catalog=Test;Data Source=ljx"
End Sub
Private Sub cmdSaveFile_Click()
saveFile App.Path & "\temp.jpg"
End Sub
Private Sub cmdReadFile_Click()
readFile App.Path & "\temp1.jpg"
End Sub
'保存文件到数据库
Private Sub saveFile(Byval strFile As String)
Dim tmp() As Byte
Dim lngFile As Long
If rs.State=adStateOpen Then rs.Close
rs.Open "select * from test where 1<>1", cn, adOpenDynamic, adLockOptimistic
lngFile = FreeFile
Open strFile For Binary As #lngFile
ReDim tmp(LOF(lngFile))
Get #lngFile, , tmp
Close #lngFile
rs.AddNew
rs.Fields("ID").Value="001"
rs.Fields("pic").Value = tmp
rs.Update
End Sub
'读取数据库的文件,保存到硬盘
Private Sub readFile(Byval strFile As String)
Dim tmp() As Byte
If rs.State=adStateOpen Then rs.Close
rs.Open "select * from test where [ID]='001'", cn
ReDim tmp(rs.Fields(0).ActualSize) '返回2进制文件的字节长度
tmp = rs.Fields("pic").Value
Open strFile For Binary As #1
Put #1, , tmp
Close #1
End Sub
Private Sub Form_Unload(Cancel As Integer)
If rs.State<>adStateClosed Then rs.Close
If cn.State<>adStateClosed Then cn.Close
Set rs = Nothing
Set cn=Nothing
End Sub
Top
6 楼sxslyy(孤松傲雪)回复于 2006-03-10 09:06:35 得分 0
最想知道的是如不转换能不能用SQL语句直接操作,如Insert into或updateTop
7 楼Modest(塞北雪貂)·(偶最欣赏楼主的分)回复于 2006-03-10 09:22:39 得分 20
SQL语句本身是字符串,并且有长度限制。
如果你非要用SQL语句的话,必须保证你的值也是字符串,并且在SQL规定的长度之内。
这些你做到了,那么就能如你所愿。Top
8 楼sxslyy(孤松傲雪)回复于 2006-03-10 10:40:49 得分 0
喔!是这样呀!谢谢楼上的兄弟!Top




