
数据库连接步骤
1、在powerbuilder软件界面,点击上面数据库图标。
2、d出Database Profiles窗口,在此窗口内,双击图中标注ODBC Administrator项。
3、在d出的ODBC数据源管理器中点击右侧的添加按钮。
4、在d出的创建新数据源窗口中,点击最下方SQL Server Native Client 100项。
5、d出创建到SQL Server的新数据源窗口,输入任意名称、描述,服务器处输入(local),点击下一步。
6、在新的界面最上方“更改默认数据库为”前勾选,下方选择你的程序想要连接的数据库。点击下一步。
7、一直点击下一步直到如图界面,到此数据源的添加基本完成,点击下方测试数据源,提示成功后关闭此界面即可;如果不成功请从头再次 *** 作,注意每一个小细节。
8、上个步骤关闭窗口后,回到原来的ODBC数据源管理器窗口,可以看到列表上方出现了刚刚创建的数据源,关闭此窗口。
9、回到Database Profiles窗口,如图,点击ODB ODBC,然后点击右侧New按钮。
10、新d出Database Profile Setup-ODBC窗口,填写Profile Name,下拉列表选择对应Data Source项。(如果你的数据库没有设置登录密码,则下方的user id和password项不需填写)
11、中间穿插一步,如图,在这个窗口上方点击Preview标签,复制下方的一段代码,留待后面使用。点击OK,关闭此窗口。
12、点击新添加的那一项,如图,点击右侧Connect按钮,然后数据库小图标会出现一个绿色小勾。到这里,连接数据库的所有配置已经完成,只需在程序中添加连接数据库的代码就可以了。
13、如图,在一个程序窗口的open事件中添加了刚刚复制的那段代码,这样这个窗口在打开时就可以直接连上数据库了。
利用PowerBuilder建立数据窗口时 用户通常不能自己选择数据来源和显示类型 如何让用户在应用程序中自己定义数据窗口的数据来源和显示类型呢?为了达到这个目的 我们必须在运行程序阶段根据用户自己的需求 动态地建立一个数据窗口
在建立动态数据窗口之前 必须先得到数据窗口对象的语法 PB中为我们提供了SyntaxFromSQL( )函数 利用这个函数可以得到建立数据窗口的语法 SyntaxFromSQL()函数的基本格式如下
事物对象 SyntaxFromSQL(数据来源字符串 显示类型字符串 错误字符串)
下面是建立一个数据窗口对象语法的范例∶
// 声明变量
string ls_sql ls_present ls_err ls_syntax
// 定义数据窗口的数据来源
ls_sql = select emp_id from employee
//定义数据窗口显示字符串
ls_present = style(type=tabular)
// 得到建立数据窗口对象语法
// 如果错误发生 SyntaxFromSQL 返回一个空字符串
ls_errls_syntax = SQLCA SyntaxFromSQL(ls_sql ls_present ls_err)
利用 SyntaxFromSQL( )所建立的数据窗口对象是在运行阶段才建立的对象 并不会自动保存在PB的对象数据库 Library 中 为了以后可以重复使用这个数据窗口对象 可以利用 LibraryImport( )函数保存数据窗口对象
在利用 SyntaxFromSQL( )函数建立一个数据窗口语法后 必须将它与窗口上的数据窗口控件结合 这个数据窗口控件必须已经存在于窗口中 要将数据窗口对象语法和一个已经存在的数据窗口控件结合 必须利用Create( )函数 下面是范例程序∶
// 声明变量string ls_syntax ls_err
ls_errdw_ Create(ls_syntax ls_err)
dw_ SetTransobject(SQLCA)
dw_ retrieve( )
在上面程序中 ls_syntax是运行SyntaxFromSQL( )函数后所返回的字符串 除此之外 也可以利用LibraryExport( )函数从PB对象数据库中得到已经存在于PBL中的数据窗口对象语法 因为Create( )函数会破坏先前数据窗口与事物对象的结合 所以必须利用SetransObject( )函数重新结合事物对象给新的数据窗口对象 最后再运行Retrieve( )函数 从数据库中读取数据
最后 我们需要利用SQL 语句字符串 动态创建一个新的数据窗口对象到一个数据窗口控件当中 虽然 在运行阶段并不能直接在窗口上建立一个数据窗口控件 但却可以利用用户对象建立一个与窗口上一样的数据窗口控件 在运行阶段时再动态打开这个用户对象 下面是动态建立数据窗口控件的步骤∶
在用户对象画板内 建立一个标准数据窗口的用户类
可以在这个控件中增加功能 程序 用户对象函数和用户自定义事件后 保存用户对象到对象数据库中
利用 OpenUserObject( )函数建立一个数据窗口用户对象的复件 一般格式如下∶OpenUserObject(用户对象变量 {x坐标值 y坐标值}) 下面是在窗口上鼠标点击的坐标位置建立一个用户对象 u_dw的范例∶ OpenUserObject(u_dw Pointerx( ) Pointery( ))
以上是建立一个动态数据窗口的基本步骤 感兴趣的朋友不妨一试
编辑推荐
ASP NET开发培训视频教程
lishixinzhi/Article/program/PB/201311/24609
很久没用过PB了,网上找了一篇,大致看了一下,应该没什么问题
--转自51CTO论坛
在PowerBuilder里面 *** 作BLOB数据地灵活技术
PowerBuilder提供的BLOB(Binary Large Object)数据类型可以用来处理大型数据,包括图像、大文本、Word文档、二进制文件和多媒体等各种数据,它的长度可以是0~2GB字节,我们利用BLOB类型的变量可以将数据传递给数据库以大字段方式存储。但是用通常的数据窗口技术无法将BLOB类型数据加入到数据库中,也不能将数据库中相应字段的数据提取出来,即使在程序中直接使用UPDATE和SELECT等SQL语句也是无法对BLOB类型数据进行 *** 作的。下面笔者将介绍在PowerBuilder 70中 *** 作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中创建一个新的数据库文件,文件名是bmpmdb,在其中定义BMP数据表bmptable如下:
各字段的其它设置(如字段宽度等),均采用缺省形式即可。
编程前还需要做的一步准备工作是在 *** 作系统的ODBC配置中建立指向bmpmdb数据库的连接,名称定为bmptable。
下面的程序片段实现了数据库的连接,的插入、更新、删除和查询。考虑文章的篇幅,本文只列出与主题相关的程序源码。
1 连接Access数据库
SQLCADBMS = "ODBC"
// SQLCA为全局transaction事务变量
SQLCAAutoCommit = False
SQLCADBParm = "Connectstring='DSN=bmptable;UID=WD='"
CONNECT USING SQLCA;
If SQLCA SQLCode <> 0 Then
MessageBox ("数据库错误", "连接失败!")
Halt close;
End If
2 将BMP存入数据库
integer bmpno,icount
//变量bmpno存放给定的编号
string filepath,filename
blob blb_tmp
//…此处对编号bmpno赋值,例如bmpno=101;可以通过程序实现为d出对话框窗口提供一个编号
//查询指定的编号是否已经存在
icount=0
SELECT COUNT() INTO :icount
FROM bmptable
WHERE bmptablebmpno=:bmpno
USING SQLCA; //:bmpno为给定的编号
if icount>0 then
MessageBox("查询结果",string(bmpno)+" 号已经存在,请输入一个新的编号")
return
end if
//在OLE控制对象ole_1中插入BMP文件
GetFileOpenName("请选择一个需要插入的BMP文件",filepath,filename,"BMP","BMP文件(BMP),BMP")
If Len(filepath)=0 Then
Return
End If
If ole_1InsertFile(filepath)<>0 Then //OLE错误
Return
End If
//新入库
string sql
sql= "INSERT INTO bmptable (bmpno,bmpdata,bmpname) &&
VALUES ("&&
+string(bmpno)+",'','"&&
+filename+"')"
EXECUTE IMMEDIATE :sql;
If SQLCASQLDBCode=0 Then
COMMIT USING SQLCA;
//提交事务
Else
MessageBox("数据库错误","插入失败")
ROLLBACK USING SQLCA;
//事务回滚
Return
End If
Blb_tmp=ole_1ObjectData
UPDATEBLOB bmptable SET bmpdata=:blb_tmp
WHERE bmptablebmpno=:bmpno
USING SQLCA; //更新存放的字段
If SQLCASQLDBCode=0 Then
COMMIT USING SQLCA;
//提交事务
MessageBox("插入成功","入库成功")
Else
MessageBox("数据库错误","更新失败")
ROLLBACK USING SQLCA;
//事务回滚
Return
End If
3 从数据库中删除BMP
UPDATE bmptable SET bmpdata=''
WHERE bmptablebmpno=:bmpno
USING SQLCA;
//bmpno为要删除的编号
If SQLCASQLDBCode=0 Then
COMMIT USING SQLCA;
//提交事务
Else
MessageBox("数据库错误","更新失败")
ROLLBACK USING SQLCA;
//事务回滚
Return
End If
DELETE FROM bmptable
WHERE bmptablebmpno=:bmpno
USING SQLCA;
If SQLCASQLDBCode=0 Then
COMMIT USING SQLCA;
//提交事务
MessageBox("删除成功","删除成功")
Else
MessageBox("数据库错误","删除失败")
ROLLBACK USING SQLCA;
//事务回滚
Return
End If
4 按编号查询信息
//需要提供一个编号存放在变量bmpno中
SetNull(blb_tmp)
SELECTBLOB bmptablebmpdata INTO :blb_tmp
FROM bmptable
WHERE bmptablebmpno=:bmpno
USING SQLCA;
If Not IsNull(blb_tmp) Then
ole_1ObjectData=blb_tmp
//双击OLE控制唤醒OLE服务器即可编辑
End If
使用PB编程时,每次对数据库进行 *** 作后要注意检查返回结果,以保证程序的可靠性。以上程序只是对 *** 作BLOB数据类型的关键技术进行探讨,通过画板设计相应的用户界面,即可形成一个完整的基于Client/Server结构的数据库应用程序。
以上就是关于powerbuilder如何连接sql数据库,需要具体的 *** 作过程全部的内容,包括:powerbuilder如何连接sql数据库,需要具体的 *** 作过程、利用PB动态创建数据窗口、PB中将word或excel导入到数据库中,并在datawindow中显示出其文件名,求详细代码和方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)