您的位置:首页 > 数据库 > Oracle

用vba插入字符串到Oracle的BLOB字段

2008-06-24 19:41 155 查看
1、Oracle BLOB 字段简介

Oracle的BLOB字段,在Oracle中称之为 BLOB:Binary Large Object (二进制大对象),ORACLE不自动转换大对象数据。BLOB被ORACLE8解释为二进制位流,类似LONG RAW。

2、使用VBA操作BLOB

我们通过例子来介绍VBA对此类型数据的操作。在例子中,我尽量对重要的地方做说明。

1)数据表原型

-- 创建表,需要注意的就是TAB_BLOB字段允许为空
create table TAB_BLOB_TEST (
TAB_ID VARCHAR2(30) not null,
TAB_LANG CHAR(5) default 'zh_CN' not null,
TAB_BLOB BLOB
)

--在列上加注释
comment on column TAB_BLOB_TEST.TAB_ID is '字段编码,主键';
comment on column TAB_BLOB_TEST.TAB_LANG is '语言版本';
comment on column TAB_BLOB_TEST.TAB_BLOB is '测试长字段';

-- create sequence SEQTAB_BLOB_TEST_ID
minvalue 1
maxvalue 999999999999999999999999999
start with 1 increment by 1
cache 20;

2)VBA相关函数

'函数名称ConverStringBoBin
'函数作用把字符串转换成对应的二进制表示形式,如果是图片或其它文件,可参考其它转换函数
'因为在VB中使用的字符集是Unicode类型,所以就这样转换了.实际上只是字符串的二进制表示方式
Function ConverStringBoBin(strData As String) As Byte()
Dim byt() As Byte
byt = strData
ConverStringBoBin = byt
End Function

'===========================================
'== ==
'== 函数 GetConnString ==
'== 功能 获取连接字符串 ==
'== 参数 ==
'== Author Alpzhizhi ==
'== ==
'===========================================
Function GetConnString()
GetConnString = "Provider=OraOLEDB.Oracle.1;User ID=YourDataBaseUserName;Password=YourDataBasePassword;Data Source=YourDataBaseName;"

End Function

3)、VBA对数据库操作

'===========================================
'== ==
'== 函数 SaveToDateBaseOfString ==
'== 功能 保存字符串到数据库 ==
'== 参数 ==
'== Author Alpzhizhi ==
'== ==
'===========================================
Sub SaveToDateBaseOfString(ByVal strData As String)
On Error Resume Next
Dim Sql As String
Dim KeyValue As String
Dim Cn As Connection
Dim Rs As Recordset
Dim Byts() As Byte
'创建数据库连接对象
Set Cn = New Connection
Cn.Open GetConnString

''获取下一个关键ID
Sql = "SELECT SEQTAB_BLOB_TEST_ID.NEXTVAL VAL FROM DUAL"
Set Rs = Cn.Execute(Sql)
KeyValue = Rs("VAL")

'向数据库中插入一条数据,
Sql = "INSERT INTO TAB_BLOB_TEST(TAB_ID) VALUES('" & KeyValue & "')"
Cn.Execute Sql

'获取刚刚插入的记录的BLOB字段
Sql = "SELECT TAB_BLOB FROM TAB_BLOB_TEST WHERE TAB_ID = '" & KeyValue & "'"

'把要插入的字符串改转换为二进制类型(字节型)

Byts = ConverStringBoBin(strData)

'创建并打开数据记录集对象

Set Rs = New Recordset

Rs.Open Sql, Cn, 3, 3 '注意这里的打开模式

Rs("BBZD_GS") = Byts '把二进制数据写入到 Recordset 对象

Rs.Update '更新数据库

Set Rs = Nothing
Set Cn = Nothing

End Sub

用vba插入字符串到Oracle的BLOB字段,关键就是把字符串插入到数据库之前,要把字符串先转换成二进制表达形式,以便与数据库中的数据类型保持一致。


希望此文的介绍,广大朋友对用用vba插入字符串到Oracle的BLOB字段有所了解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: