blob数据类型(找不到数据类型 blob)

本文目录
- 找不到数据类型 blob
- 怎样查看blob类型的数据
- blob数据类型有哪些
- 在PB中用OLE存取blob类型数据(二)
- 如何查询blob类型中存的是什么格式的文件
- C#中如何读取blob类型的数据
- 在PowerBuilder中操作BLOB数据的技巧[1]
- oracle中Blob和Clob类型的区别
- 在PB中用OLE存取blob类型数据(一)
找不到数据类型 blob
Blob数据类型的使用:
blob{200} bl_var // 定义一个初始大小为200字节blob
blob bl_var // 普通定义方法,零长度blob
bl_var = Blob(Space(200)) // 动态分配200个字节,实际上是分配了一个200字符的字符串,全部为空格(ASCII码20H),最后转换为blob。也就是开辟了一个200字节的内存区,内容都是20H,而不是00H。全部初始化为全零的变通方法:(DX有更直接方法吗?)
blob bl_var
bl_var = Blob(Space(200))
for i = 1 to Len(bl_var)
BlobEdit(bl_var, i, Char(0))
next
// BlobEdit()用于修改一个blob变量指定位置的值,修改值可以是任何类型(转换到blob字节)。
但是有个奇特的地方,PB会把char看作string,当写入了一个非零的字符(char)时,字符串以零字符结束,因此实际上修改了blob变量的两个字节(一个是字符本身,一个是零字节),解决方法是Blob(some_char),因为用Blob来转换字符串时,只有有效字符被转换,结尾的零字符会被忽略。而Blob(Char(0))将会返回一个空值,因为PB把char(0)作为零长度的字符串处理。
当修改值超出blob变量的范围时,该次修改将不起作用!
// 对blob变量作逐字节处理的方法:
// bl_source已经初始化,i是要处理的字节位置
blob{1} bl_byte // 声明单字节长度的blob
int li_byte
bl_byte = BlobMid (bl_source, i, 1) // Extract a byte
li_byte = Asc(String(bl_byte)) // 转换到整型
... // 对li_byte的值作任意处理,处于0-255单字节取值范围内
// 字节内容处理后再放回去
if li_byte = 0 then
BlobEdit(bl_source, i, Char(0)) // 写入00H
else
BlobEdit(bl_source, i, Blob(Char(li_byte)))
如果还有什么不懂的地方,可以搜索编程回忆录,现在他们也开始录制了这方面的教程, 我觉得这个课程很不错,零基础开始,由浅入深,容易学。
怎样查看blob类型的数据
BLOB为二进制流文件,可导出为OS文件,用二进制文本器打开,或用相关软件打开。
1、BLOB为二进制流文件,可导出为OS文件,用二进制文本器打开,或用相关软件打开。
2、在PL/SQL Develop里,你可以直接把他们存为txt文件。
blob数据类型有哪些
blob数据类型以随机存取块的形式存储任何种类的二进制数据;二进制数据通常由已保存的电子表格、程序装入模块和数字化声音模式等等组成。
BLOB数据类型以随机存取块(称为智能大对象空间)的形式存储任何种类的二进制数据。二进制数据通常由已保存的电子表格、程序装入模块和数字化声音模式等等组成。数据库服务器不会对BLOB列的内容进行解释。
BLOB列最长可为4太字节(4*240个字节),不过系统资源可能会强加较低的实际限值。分配给智能大对象数据类型的最小磁盘空间量为512字节。
术语智能大对象指的是BLOB和CLOB数据类型。将CLOB数据类型,用于随机访问文本数据。有关BLOB和CLOB数据类型的一般信息。
在PB中用OLE存取blob类型数据(二)
处理blob类型数据
对于大二进制数据 在PB Script中是用blob数据类型表示并加以处理 标准SQL语句中的select insert和update语句无法直接查询blob类型的数据 在PB中操作blob类型的数据只能用专用的语句 从数据库中查询blob类型的数据的命令是
selectblob restofselectstatement {using transactionobject}
更新数据库中blob类型数据的格式是
updateblob tablename set blobcolumn = blobvarible restofupatestatement {using transctionobject}
如连接的数据库是sybase或者Sql 则selectblob和updateblob语句要求数据库的自动提交方式为true 所以在在每次调用selectblob和updateblob语句以前必须用命令 Sqlca automit=true 把数据库的自动提交方式设置为true 在updateblob语句的结束后 再用命令Sqlca automit = false 把自动提交方式设置为false 索数据的参数(如flag) 然后在可修改列的Protect后的框中输入(user_name是该DataWindow中的一列 代表输入者的名称)
数据窗口的blob列
数据窗口blob列的功能
在PB 的datawindow画板中DBOLE控件允许用户利用这个控件浏览和操作数据库中的大二进制数据 即通过DBOLE控件可以作如下操作
往数据库中存储大二进制数据 如 excel工作表 word文档 视频文件 图片文件等各种格式的文件
从数据库中检索数据到datawindow对象
使用OLE服务器程序察看修改数据
将修改后的数据保存回数据库
在数据窗口中添加blob列的的步骤
)选择具有二进制字段的数据表作为数据源建立一新的数据窗口(该窗口可以至少需要包含非数据库表的标识列)
)选择insert control OLE database blob 菜单 在数据窗口的detail节中要插入blob列的位置单击鼠标 这时将显示如图 所示的对话框
下面解释这些属性的具体含义
)client class 客户类名 默认为datawindow
)client name 客户名 默认为untitled
)table: 选择含有blob列的数据库表 所选表的字段将出现在右侧的large binary/text column列表框中
)large binary/text column 选择一个blob类型的字段列
)key clause 检索和更新blob数据的关键字表达式其中使用带冒号前缀的变量指出是数据窗口对象的列 如 表达式 id=:id id是数据库表中的列 变量指出数据窗口对象的列
)filetemplate 如果需要OLE应用服务器每次打开相同的文件 则在filetemplate框中输入文件名
)OLE class 如果不需要OLE应用服务器每次打开相同的文件 则在OLE class框中选择一个OLE类 如Pbrush
)Client name expression 显示在OLE服务器应用程序窗口标题的文字 可以输入为 对应记录的id号是 +id
单击ok按钮关闭对话框 将dbole列添加到适当的位置 保存数据窗口
lishixinzhi/Article/program/SQL/201311/16229如何查询blob类型中存的是什么格式的文件
数据库中Blob类型可以存储二进制数据。
二进制数据可以存储的范围比较广:即可以是文件流,也可以是组合数据。
所以,blob列中存储的是否是文件,这取决于向此列的存储逻辑
如果在向列存储时,直接将文件二进制化,那么可以反向将二进制数据文件化就可以查看文件。
如果存储时,除了文件本身,还包含其它信息,则需要将这些额外信息删除后才能够写入文件。
blob列中不一定每行数据都是文件,也许是有条件的存储(与其它列相关)
即便是文件,也不一定是同一种格式的文件,假如都是图像文件,但有的行可能是bmp,有的行可能是jpg。在文件化后需要使用正确的打开方式才可以。
C#中如何读取blob类型的数据
什么是 BLOB?
BLOB 是二进制大对象(binary large object)的首字母缩写,是在 SQL Server 中作为一个单一实体存储的二进制数据集合。BLOB 主要用于保存多媒体对象,比如图像、视频和声音,但是它们还可以存储程序,甚至是代码片断。虽然 SQL Server 支持 BLOB,但不是所有数据都支持。
C#读取BLOB数据
有几种方法可以用来从 SQL Server 数据库读取数据。首先,你可以逐行读取数据;或者,你可以选择从特定列中读取数据。最简单的方法是访问特定的列,下面我们先讨论这种方法。
C#读取BLOB数据要求工作在字节级。幸运的是,SqlDataReader 对象有一个 GetBytes 方法用于以字节方式访问一个列的数据。一旦字节被读取,它们就可以与一个 FileStream 对象组合,以将 BLOB 对象保存到一个文件中。下面的 C#代码给出了这个例子:
1. Byte blob = null;
2. FileStream fs = null;
3. const string sConn = "server=(local);Initial
4. Catalog=Northwind;UID=ctester;PWD=password";
5. try {
6. SqlConnection conn = new SqlConnection(sConn);
7. SqlCommand cmd = new SqlCommand("SELECT Picture FROM Categories WHERE
8. CategoryName=’Builder’", conn);
9. cn.Open();
10. SqlDataReader sdr = cmd.ExecuteReader();
11. sdr.Read();
12.
13. blob = new Byte;
14. sdr.GetBytes[0, 0, blob, 0, blob.Length);
15. sdr.Close();
16. conn.Close();
17. fs = new FileStream("c:\\Builder.doc", FileMode.Create, FileAccess.Write);
18.
19. fs.Write(blob, 0, blob.Length);
20. fs.Close();
21. } catch (SqlException e){
22. Console.WriteLine("SQL Exception: " + e.Message);
23. } catch (Exception e) {
24. Console.WriteLine("Exception: "+ e.Message);
25. }
在PowerBuilder中操作BLOB数据的技巧[1]
PowerBuilder提供的BLOB(Binary Large Object)数据类型可以用来处理大型数据 包括图像 大文本 Word文档 二进制文件和多媒体等各种数据 它的长度可以是 ~ GB字节 我们利用BLOB类型的变量可以将数据传递给数据库以大字段方式存储 但是用通常的数据窗口技术无法将BLOB类型数据加入到数据库中 也不能将数据库中相应字段的数据提取出来 即使在程序中直接使用UPDATE和SELECT等SQL语句也是无法对BLOB类型数据进行操作的 下面笔者将介绍在PowerBuilder 中操作BLOB类型数据的技巧
程序设计原理
在PB中实现BLOB类型数据的入库和查询 主要要用到两条特殊的SQL命令 UPDATEBLOB和SELECTBLOB 首先定位要进行操作的记录 然后使用UPDATEBLOB命令就可以将BLOB类型变量中存放的数据传递给数据库 而使用SELECTBLOB则是将指定记录中的大字段数据传递给BLOB变量
使用BLOB类型变量获取外界文件的数据内容 还必须借助于PB提供的可视化OLE控制对象 通过它可以将指定的文件内容显示成相应的对象(如BMP图片) 双击它就可以激活相应的OLE服务器应用程序 来修改对象的内容 同时也可以读取对象的数据内容(利用OLE控件的ObjectData属性) 给BLOB类型变量赋值
下面结合一个简单的程序实例 讲述如何处理BLOB数据类型 在这个例子中 BMP图片将作为一个大字段存储在数据库中 我们选择Microsoft Access 作为后台数据库 它的字段类型中包含 OLE对象 类型(如果选择MS SQL Server作为数据库服务器 可以使用TEXT或IMAGE类型字段存放大字段数据) 这样就为管理多媒体数据 大文件和图片提供了支持
操作BLOB字段的实现过程
我们在Access中创建一个新的数据库文件 文件名是bmp mdb
各字段的其它设置(如字段宽度等) 均采用缺省形式即可
编程前还需要做的一步准备工作是在操作系统的ODBC配置中建立指向bmp mdb数据库的连接 名称定为bmptable
下面的程序片段实现了数据库的连接 图片的插入 更新 删除和查询 考虑文章的篇幅 本文只列出与主题相关的程序源码
连接Access数据库
SQLCA DBMS = ODBC
// SQLCA为全局transaction事务变量
SQLCA AutoCommit = False
SQLCA DBParm = Connectstring= DSN=bmptable;UID=;PWD=
CONNECT USING SQLCA;
If SQLCA SQLCode 《》 Then
MessageBox ( 数据库错误 连接失败! )
Halt close;
End If
将BMP图片存入数据库
integer bmpno icount
//变量bmpno存放给定的图片编号
string filepath filename
blob blb_tmp
//…此处对图片编号bmpno赋值 例如bmpno= ;可以通过程序实现为弹出对话框窗口提供一个图片编号
//查询指定的图片编号是否已经存在
icount=
SELECT COUNT() INTO :icount
FROM bmptable
WHERE bmptable bmpno=:bmpno
USING SQLCA; //:bmpno为给定的图片编号
if icount》 then
MessageBox( 查询结果 string(bmpno)+ 号图片已经存在 请输入一个新的图片编号 )
return
end if
//在OLE控制对象ole_ 中插入BMP图片文件
GetFileOpenName( 请选择一个需要插入的BMP图片文件 filepath filename BMP BMP图片文件( BMP) BMP )
If Len(filepath)= Then
Return
End If
If ole_ InsertFile(filepath)《》 Then //OLE错误
Return
End If
//新图片入库
string sql
sql= INSERT INTO bmptable (bmpno bmpdata bmpname) &&
VALUES ( &&
+string(bmpno)+ &&
+filename+ )
EXECUTE IMMEDIATE :sql;
If SQLCA SQLDBCode= Then
MIT USING SQLCA;
lishixinzhi/Article/program/PB/201311/24625oracle中Blob和Clob类型的区别
BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB是可以直接存储文字的。其实两个是可以互换的的,或者可以直接用LOB字段代替这两个。但是为了更好的管理ORACLE数据库,通常像图片、文件、音乐等信息就用BLOB字段来存储,先将文件转为二进制再存储进去。而像文章或者是较长的文字,就用CLOB存储,这样对以后的查询更新存储等操作都提供很大的方便。
在PB中用OLE存取blob类型数据(一)
前言
在数据库的开发过程中 经常需要在数据库中存储一些备注信息 而这些备注信息的内容一般较大 格式多样 如有可能是语音文件 视频文件 图片文件 文本文件等 怎样在PB中实现这些格式不同的备注文件的存取及预览 一直是PB开发人员比较关心的一个问题 本文系统的介绍了三种存取备注二进制信息的方法
对备注二进制信息的存储可以采用以下三种方式
方法一 文件保存在固定的路径下 数据库中存取文件路径和名称
方法二 数据库中用blob类型或者varbinary类型字段存储备注文件
方法三 在本地用OLE存储结构存储备注文件
OLE的基本概念
OLE是Object Linking Embedding(对象链结与嵌入)的缩写 它可以使windows应用程序共享数据和程序
OLE控件
在PB中OLE控件是一个OLE对象的包容器 可以使用服务器应用程序提供的功能和命令来对象 也可以使用自动化OLE交互 在程序中激活对象和向服务器应用程序发送命令 在PB 的window画板中的OLE控件允许用户从多个应用程序嵌入和链结组件
建立和设置OLE控件
从window画板中选择OLE控件插入window
当建立一个OLE控件并且插入一个对象时 PB将激活服务器应用程序以允许对对象进行和修改 在使OLE中的对象称为非活动状态后 可以使用控件属性选项卡来设置控件的属性
激活修改window画板中的OLE对象
在OLE控件的弹出菜单中选择open可以激活画板中OLE对象
使用服务器应用程序修改OLE对象
结束修改 使对象恢复为非活动状态 只要单击服务器应用对象之外的任何区域即可 也可以直接关闭服务器应用程序的窗口
嵌入和链结OLE控件
可以将OLE对象嵌入或者链结到自己的应用程序中 嵌入对象的数据放在应用程序中 在开发过程中这些数据放在应用程序的PBl库中 当生成应用后 这些数据将存放在exe或PBd文件中 虽然在程序的运行过程中可以修改 但修改的数据不会保存 链结对象的数据存放在PB应用程序以外 当链结一个对象时 在PB应用程序中不存放数据文件 而是存放引用数据的指针 使用链结的数据 对数据的管理和保存都由服务器应用程序负责 这样可以用服务器应用程序修改处理数据 处理后的数据可以保存回原文件中 链结方式应用于需要多个应用程序共享的数据文件 任何一个应用程序修改了数据文件 都将影响到所有链结该文件的应用程序
OLE控件的激活方式
OLE控件的激活方式有offsite和in place两种激活方式 offsite激活方式是指在PB应用程序的界面以外单独打开OLE对象 in place激活方式是指PB应用程序的界面的原位置打开OLE对象 在数据窗口中的dbOLE默认的是offsite激活方式 而window中的OLE默认的激活方式是in place
在PB应用程序中可以用命令
OLE_control active(offsite) 或者OLE_control active(in place)设置OLE对象的以何种方式打开
设置和插入OLE对象
在程序运行时可以用函数
OLE_control insertfile(soucefile) 插入对象
OLE_control objectdata = blobvar 设置对象
OLE存储
OLE存储(OLEstorage)的概念
OLE存储(OLEstorage)是OLE数据的一个仓库 存储就象磁盘上的目录结构 它可以是一个OLE对象 也可以包含在OLE对象中 每个对象都包含在OLE存储或者存储内的子存储内 保存在OLE存储中数据称作OLE流(OLE stream) OLE流同OLE对象的关系就象文件同目录的关系 含有OLE对象的存储或子存储可以看做是属于特殊服务器的信息 在该层次之下的各部分都可以被相应的服务器程序操作 OLE存储对象是类用户对象 可以说明相应类型的变量 建立与之相应的实例和打开存储等 在使用完存储后需要关闭存储 释放分配的内存
OLE存储的打开和保存
OLE存储可以用open函数打开 open函数的格式为
Olecontrol Open(OLEsourcefile)
此函数在OLEsourcefile不存在时 自动创建该文件 所以创建OLE文件也用该函数 OLE存储可以用save函数保存 save函数的格式为
OLEcontrol save() // 保存OLE控件
lishixinzhi/Article/program/SQL/201311/16230
更多文章:
vmware支持arm吗(Qemu vmware 是都是虚拟机吗有什么不同)
2026年5月7日 05:45
云数据库开审计(sqlserver如何设置数据库层面日志审计)
2025年12月13日 14:45
zxing-cpp不支持中文吗?请问谷歌开源项目“zxing”,“zxing“这个词怎么念吗
2026年5月12日 07:15
css 设置背景的颜色及形状?请问一下CSS3样式中如何让背景渐变与背景图片共存啊!
2025年6月13日 20:00
to close和closeing(closeto后面为什么可以直接接名词)
2025年10月28日 17:30
hbuilder浏览器不显示(最新版hbuilder换谷歌浏览器打不开)
2026年8月4日 09:00
量化中的feature和weight(同位素在量化计算中如何处理,有什么区别)
2026年8月8日 07:30
expect和exclude(expect和besides有什么区别)
2026年9月19日 02:30
















