1、在讲插入ls 操作图片如何插入sql server之前,我们要先了解些相关知识
ADO中的AppendChunk方法---将我们的数据追加到大型文本、二进制文件中
Notesstream类,读取文件,转为二进制文件,具体请参考lotus designer的help
我们现在主要是用到open /read2个事件
2、代码段
sub F_ImageInsertSQL
'---声明所需要的一些变量
Dim conn As Variant
Dim EmpRS As Variant
Dim Stream As Variant'ADO 使用流,用于读取二进制文件,处理文件和图片
Dim Session As New NotesSession
Dim DB As NotesDatabase
Dim Doc As NotesDocument
Dim SQLCmd As String
Const Maxchunksize = 32767'系统限制的最大流值32kb,二进制文件分块后最大值是maxchunkSize;
Dim Allchunksize As Long'整个二进制文件的大小
Dim Numchunk As Long'一个二进制流分成几块,NumChunk=2,即分成2块
Dim LeftOver As Long '余数,=Allchunksize mod MaxChunkSize
Dim FileLength As Long'源文件长度
Dim instream As NotesStream
'初始化ADODB
Set Conn = CreateObject("ADODB.Connection")
Set EmpRS = CreateObject("ADODB.Recordset")
Set db=session.CurrentDatabase
Set Stream=CreateObject("ADODB.stream")
FileLength=Filelen(filename)'提取本地文件的大小,filename--绝对路径。如c:/a.jpg
If FileLength >0 Then
Numchunk=FileLength/Maxchunksize'提取到底存在多少个最大值
LeftOver=FileLength Mod Maxchunksize‘余数
End If
'---------得到数据库连接-------------------
ConnectString$=ADODB.GetSQLConnection(Nothing,"ProfileLK","g3")'这里是一个数据库字符串,用户自己可以设置
Conn.Open ConnectString$
'-----定义流----------------------------
Set instream = session.createstream
If instream.open(filename,"binary") Then’能够正常提取本地文件,binary--二进制的方式打开
'--------Add 数据----------------------------
SQLCmd = |Select * from b_material_photo |'sql命令语句
EmpRS.Open SQLCmd,Conn,1,3'执行语句
EmpRS.AddNew
EmpRS.Fields("father").Value = "abcd"
'--- 因为32kb大小的限制,我们的图片不可能都是小于32kb,
'这个时候就需要我们用一个循环语句按分块读取,maxChunkSize是每一个块的最大值
'当然由于我们不可能凑整数凑的这么好,多少还留有余数,所以我们还需要把最后一部
'分的余数也提取出来。
'
'
For i=1 To NumChunk
emprs("b_photo").AppendChunk instream.Read(maxChunkSize)
Next
emprs("b_photo").AppendChunk instream.Read(LeftOver)
EmpRS.Update
End If
end Sub
3、代码思路解释下
如果用户懂得vb、vc的操作方式的话,它们对于大文件存入数据库是需要把转为二进制的文件进行分块读取,提高读取速度。当然我们lotus,好像有32kb大小的限制,那我们正好就利用vb分块读取大文件写入数据库的思想,我们也就能够在lotus实现附件、图片存入sql server的操作
4、这个操作之前,我们还需要rtf域中的图片存入到本地,这个方法以前论坛里空空空好像还特别写了个类库,提取rtf域的附件到本地,大家可以在里面收下。
5、上面的代码,我自己测试过。主要是自己在做产品资料库的开发,需要这方面的技术,,这几天在网上查询资料,有些匮乏但问得人也不少。自己既然能实现这个功能,也希望给那些研究此功能的用户提供点帮助。
lotus 图片存入sql server的操作方法(原创)
最新推荐文章于 2023-12-02 10:12:47 发布