前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于PowerBuilder的搜索

PowerBuilder中操作BLOB数据的技巧 - 51CTO.COM 首页技术频道51CTO旗下网站地图 社区:学院下载论坛博客更多 网络 安全 开发 数据库 服务器 系统 虚拟化 云计算 嵌入式 移动开发 51CTO.COM CIOage.com WatchStor.com HC3i.cn 灵客风LinkPhone 首页 | Java | .NET | Web | XML | 语言工具 | 测试 | 游戏 | 移动 | 架构 | 项目管理 | 全部文章 您所在的位置:开发 > 语言&工具 > 在PowerBuilder中操作BLOB数据的技巧 在PowerBuilder中操作BLOB数据的技巧 2005-09-21 11:41 51cto.com整理 51cto.com 我要评论(0) 字号:T | T PowerBuilder提供的BLOB(Binary Large Object)数据类型可以用来处理大型数据,包括图像、大文本、Word文档、二进制文件和多媒体等各种数据,它的长度可以是0~2GB字节,我们利用BLOB类型的变量可以将数据传递给数据库以大字段方式存储。 AD: PowerBuilder提供的BLOB(Binary Large Object)数据类型可以用来处理大型数据,包括图像、大文本、Word文档、二进制文件和多媒体等各种数据,它的长度可以是0~2GB字节,我们利用BLOB类型的变量可以将数据传递给数据库以大字段方式存储。但是用通常的数据窗口技术无法将BLOB类型数据加入到数据库中,也不能将数据库中相应字段的数据提取出来,即使在程序中直接使用UPDATE和SELECT等SQL语句也是无法对BLOB类型数据进行操作的。下面笔者将介绍在PowerBuilder 7.0中操作BLOB类型数据的技巧。 程序设计原理 在PB中实现BLOB类型数据的入库和查询,主要要用到两条特殊的SQL命令——UPDATEBLOB和SELECTBLOB,首先定位要进行操作的记录,然后使用UPDATEBLOB命令就可以将BLOB类型变量中存放的数据传递给数据库,而使用SELECTBLOB则是将指定记录中的大字段数据传递给BLOB变量。 使用BLOB类型变量获取外界文件的数据内容,还必须借助于PB提供的可视化OLE控制对象,通过它可以将指定的文件内容显示成相应的对象(如BMP图片),双击它就可以激活相应的OLE服务器应用程序,来编辑修改对象的内容,同时也可以读取对象的数据内容(利用OLE控件的ObjectData属性),给BLOB类型变量赋值。 下面结合一个简单的程序实例,讲述如何处理BLOB数据类型。在这个例子中,BMP图片将作为一个大字段存储在数据库中。我们选择Microsoft Access 2000作为后台数据库,它的字段类型中包含“OLE对象”类型(如果选择MS SQL Server作为数据库服务器,可以使用TEXT或IMAGE类型字段存放大字段数据),这样就为管理多媒体数据、大文件和图片提供了支持。 操作BLOB字段的实现过程 我们在Access中创建一个新的数据库文件,文件名是bmp.mdb,在其中定义BMP图片数据表bmptable如下: 各字段的其它设置(如字段宽度等),均采用缺省形式即可。 498)this.width=498;' onmousewheel = 'javascript:return big(this)' height=94 src="/files/uploadimg/20050921/1143290.GIF" width=291> 编程前还需要做的一步准备工作是在操作系统的ODBC配置中建立指向bmp.mdb数据库的连接,名称定为bmptable。 下面的程序片段实现了数据库的连接,图片的插入、更新、删除和查询。考虑文章的篇幅,本文只列出与主题相关的程序源码。 1. 连接Access数据库 SQLCA.DBMS = "ODBC"// SQLCA为全局transaction事务变量SQLCA.AutoCommit = FalseSQLCA.DBParm = "Connectstring='DSN=bmptable;UID=;PWD='"CONNECT USING SQLCA;If SQLCA. SQLCode <> 0 ThenMessageBox ("数据库错误", "连接失败!")Halt close;End If 2. 将BMP图片存入数据库 integer bmpno,icount//变量bmpno存放给定的图片编号string filepath,filenameblob blb_tmp//…此处对图片编号bmpno赋值,例如bmpno=101;可以通过程序实现为弹出对话框窗口提供一个图片编号//查询指定的图片编号是否已经存在icount=0SELECT COUNT() INTO :icountFROM bmptableWHERE bmptable.bmpno=:bmpnoUSING SQLCA; //:bmpno为给定的图片编号if icount>0 thenMessageBox("查询结果",string(bmpno)+" 号图片已经存在,请输入一个新的图片编号")returnend if//在OLE控制对象ole_1中插入BMP图片文件GetFileOpenName("请选择一个需要插入的BMP图片文件",filepath,filename,"BMP","BMP图片文件(.BMP),.BMP")If Len(filepath)=0 ThenReturnEnd IfIf ole_1.InsertFile(filepath)<>0 Then //OLE错误ReturnEnd If//新图片入库string sqlsql= "INSERT INTO bmptable (bmpno,bmpdata,bmpname) &&VALUES ("&&+string(bmpno)+",'','"&&+filename+"')"EXECUTE IMMEDIATE :sql;If SQLCA.SQLDBCode=0 ThenCOMMIT USING SQLCA;//提交事务ElseMessageBox("数据库错误","插入失败")ROLLBACK USING SQLCA;//事务回滚ReturnEnd IfBlb_tmp=ole_1.ObjectDataUPDATEBLOB bmptable SET bmpdata=:blb_tmpWHERE bmptable.bmpno=:bmpnoUSING SQLCA; //更新存放图片的字段If SQLCA.SQLDBCode=0 ThenCOMMIT USING SQLCA;//提交事务MessageBox("插入成功","图片入库成功")ElseMessageBox("数据库错误","更新图片失败")ROLLBACK USING SQLCA;//事务回滚ReturnEnd If 3. 从数据库中删除BMP图片 UPDATE bmptable SET bmpdata=''WHERE bmptable.bmpno=:bmpnoUSING SQLCA;//bmpno为要删除的图片编号If SQLCA.SQLDBCode=0 ThenCOMMIT USING SQLCA;//提交事务ElseMessageBox("数据库错误","更新失败")ROLLBACK USING SQLCA;//事务回滚ReturnEnd IfDELETE FROM bmptableWHERE bmptable.bmpno=:bmpnoUSING SQLCA;If SQLCA.SQLDBCode=0 ThenCOMMIT USING SQLCA;//提交事务MessageBox("删除成功","图片删除成功")ElseMessageBox("数据库错误","删除失败")ROLLBACK USING SQLCA;//事务回滚ReturnEnd If 4. 按图片编号查询图片信息 //需要提供一个图片编号存放在变量bmpno中SetNull(blb_tmp)SELECTBLOB bmptable.bmpdata INTO :blb_tmpFROM bmptableWHERE bmptable.bmpno=:bmpnoUSING SQLCA;If Not IsNull(blb_tmp) Thenole_1.ObjectData=blb_tmp//双击OLE控制唤醒OLE服务器即可编辑图片End If 使用PB编程时,每次对数据库进行操作后要注意检查返回结果,以保证程序的可靠性。以上程序只是对操作BLOB数据类型的关键技术进行探讨,通过画板设计相应的用户界面,即可形成一个完整的基于Client/Server结构的数据库应用程序。 给力 (0票) 动心 (0票) 废话 (0票) 专业 (0票) 标题党 (0票) 路过 (0票) 原文:在PowerBuilder中操作BLOB数据的技巧 返回开发首页 分享到: --> 收藏|打印|复制 关于技巧 D I的更多文章 Dephi 之DLL技巧汇集PowerBuilder编程技巧四则C++ Builder 经验小技巧斩断木马的黑手:IceSword冰刃iPod的视频硬插件 2009年10月月51CTO热门文章排行榜 【导读】2009年10月,我们见证了中国60年华诞的盛大庆典,也见证[详细] 网友评论TOP5 查看所有评论() 提交评论 栏目热门 更多>> 2012年1月编程语言排行榜:Objective-C成为 十种可能改变IT行业走向的编程语言 回顾过去一年中编程语言领域的起起落落 2012最受企业欢迎的开发技能Top10 一个站在技术之巅的女游戏程序员 同期最新 更多>> PB6中怎样实现用代码配置ODBC PB中TreeView控件的深度优化搜索算法程序 在PB中应用AutoCAD图形数据库 浅析PowerBuilder下动态SQL语句 构建JSP、PHP与JAVA融为一体的开发环境 开发 频道导航 Java Java开发|Java基础|Java EE开发|Java框架|设计模式 WEB开发 PHP开发|Python|Ruby|JSP|HTML 5|DIV+CSS 综合 .NET开发|嵌入式开发|项目管理|架构设计 热点推荐 Android开发应用详解 那些性感的让人尖叫的程序员 HTML5 下一代Web开发标准详解 高性能WEB开发应用指南 Ubuntu开源技术交流频道 热门标签: windows频道移动开发云计算objective-ctp-link路由器设置图解html5 头条 《开发月刊》2013年11月刊发布 设备和服务体验有了根本性的变革,才能改变行业对软件开发的处理方式。本期《开发月刊》… 《开发月刊》2013年10月刊发布《开发月刊》2013年8月刊发布 文章排行 本月本周24小时 天猫程序猿高端算法找妹子 那些出现在电影中的程序代码 Eclipse插件大全 挑选最牛的TOP30 被高估人士的七个习惯 只有20行Javascript代码!手把手教你写 Java数组声明、创建、初始化 详解Java解析XML的四种方法 有趣的JavaScript原生数组函数 十步完全理解SQL Linux安装JDK详细步骤 那些出现在电影中的程序代码 浏览器中关于事件的那点事儿 为网页设计师准备的10个在线的HTML5设 如果创业成功靠的是运气 Java 8最终发布日期敲定,有bug也要发 软件开发中团队首领的好坏之分 被高估人士的七个习惯 Asm.js: Javascript的编译目标 Python解释器简介(2):代码对象 Chrome新版小图标大作用:可确定噪音的 天猫程序猿高端算法找妹子 别再羡慕硅谷的食堂了,那是个“阴谋” 熊猫烧香作者的人生病毒 那些出现在电影中的程序代码 变身成功独立软件开发人的十五条秘诀 原生JavaScript技巧大收集100(上) 各式各样的极品程序员,你属于哪一种 2014年1月编程语言:Transact-SQL登年度 从编程语言排行看程序员信仰 十步完全理解SQL 热点专题 更多>> Java Socket编程入门 所谓socket通常也称作"套接字",用于描述IP地址和端口 精通Hibernate:Java Hibernate是一个开放源代码的对象关系映射框架,它对J 响应式Web设计 在Web设计和开发领域,很快的,我们将会无法跟上设备 热点标签 编程语言排行榜 敏捷开发 Eclipse 3.6 PHP设计模式 NetBeans 7 Java7 Scala编程语言 Python编程世界 Ruby On Rails开发 LINQ ASP.NET视频教程 Visual Studio 智能手机 软件下载 点击这里查看样刊 全站热点 《Linux运维趋势》2012年2月号 国内网速惹热议 提速降费呼声高 私有云vs公有云,哪一种适合你? 构建高可用Linux服务器 服务器管理工具及软件推荐 打造属于自己的赚钱机器——网上开店 触动人心--设计优秀的iPhone应用 读书 网管员必读—超级网管经验谈(第2版) 本书的第1版获得过“2006年度全行业优秀畅销品种奖”。全书共15章,分别介绍了网管员职责和应具备的工作习惯、共享上网与访问控 网络渗透测试——保护网络安全的技术、工具和过程 Web服务安全 Linux安全体系分析与编程 公钥基础设施PKI及其应用 博文推荐 更多>> 部署SMS2003+SP1详细过程rails 多按钮表单FCKeditor富文本编辑框的配置成为一流剑手需要多少年 最新热帖 更多>> 大量的H3C方案Visio图标1大量的H3C方案Visio图标1大量的H3C方案Visio图标1BE IT规划资料联想集团内部管理系统(非常好的实用 51CTO旗下网站 领先的IT技术网站 51CTO 领先的中文存储媒体 WatchStor 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i 移动互联网生活门户 灵客风LinkPhone