摘 要: 根据Microsoft ODBC接口、Authorware提供的ODBC.U32系统函数、Authorware中关于file的相关函数以及SQL Server理论,探讨并研究了Authorware中静态和动态方式访问SQL Server数据库的方法,给出了Authorware 7中静态和动态访问SQL数据库的实现方法,并分别给出了较为详细的实例操作过程。
关键词: Authorware;SQL Server;数据库
课件和知识测验等。在这些Authorware的多媒体作品中,经常需要引用SQL Server数据库中的数据。有时对引用数据只是一种单一静态展示,有时需要引用实时SQL数据并且对引用SQL数据库进行编辑修改,即以动态方式访问SQL数据。这两种引用SQL数据库的方法在各种Authorware教材中或是不涉及或是涉及很少。本文就Authorware中静态方式和动态方式引用SQL数据库数据的实现方法进行探讨并给出详细的操作实例。
1 以静态方式引用SQL数据库中的数据
在Authorware的多媒体作品中有时候仅仅想引用并展示SQL的数据库的查询结果,并不需要对数据库数据进行其他操作,因此可以用静态方式引用SQL数据库中的数据。实现方法是将SQL数据库查询结果转换成文本文件,再利用Authorware提供的内部函数访问文本文件内容,从而获得查询结果集中的记录及各字段的值。
1.1 在SQL Server中生成查询结果的文本文件
方法1:在SQL中用命令方式实现
(1)在SQL Server Management Studio 中执行如下命令,启动 show advanced options 项并设置为 1后, 再开启xp_cmdshell(注:xp_cmdshell 扩展存储过程将命令字符串作为操作系统命令 shell 执行,并以文本行的形式返回所有输出)。
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO
(2)通过bcp将SQL查询的结果保存在指定的文本文件中。
EXECmaster.dbo.xp_cmdshell 'bcp "select sno,sname,sex from studb.dbo.student" queryout "F:\authorware\student.txt" -c -T'
这时保存查询结果的文本文件student.txt已经存在了,该文件中各字段之间的分隔符为Tab。
方法2:在SQL Server中用操作方式实现[3]
(1)在SQL Server Management Studio工具菜单栏的选项中,将查询结果的显示方式改为以文本格式显示结果,并将输出格式的分隔符设置为置表符分隔。
(2)重新启动服务器后,执行相应的查询命令:
Use studb
Go
selectsno,sname,sex from student
go
在显示结果的窗格内将最后一个非记录行删除。
(3)击鼠标右键,选择“将结果另存为”命令,保存查询结果为txt文件。
(4)打开该文本文件后,选择“另存为”命令,在弹出的另存为对话框中,选择编码为ANSI,如图1所示,单击保存按钮。
1.2 对文本文件进行读写操作[3-4]
(1)用ReadExtFile(“文本文件名”)函数读取文本文件的内容,函数结果为文本文件的内容字符串。
Filestring:=ReadExtFile(“文件路径及文件名”)
(2)用LineCount()函数获取整个结果集的记录行数,默认分隔符为回车。
Number:=LineCounr(“Filestring”)
(3)用GetLine() 函数获取字符串的第n行记录,结果仍为一个字符串。
recordstring:=GetLine(“Filestring”,n)
(4)用replace()函数将记录行中各字段间的分隔符Tab替换为回车符,结果仍为字符串。
Rec:=Replace(Tab,”\r”,recordstring)
(5)根据实际需要用GetLine()函数分别获取该记录中第m个字段值,返回字段值的字符串。
fields1:=GetLine(rec,m)
(6)在Authorware的显示图标中及文字工具显示所需的字段值。
2 静态访问SQL数据实例
文中的示例数据库是一个学生成绩管理数据库studb,其中有一个存放着学生基本信息的二维关系表stduent,如图2所示。
设计流程线如图3所示。
(1)在设置窗口大小的计算图标中输入代码:ResizeWindow(240,150)。
(2)再读取文本文件的计算图标中输入代码:
txtstring:=ReadExtFile("F:\\student.txt")
linecount:=LineCount(txtstring)
rec_n:=1
(3)在显示记录的交互图标的附加计算图标中输入代码:
rec:=GetLine(txtstring, rec_n)
rec:=Replace(Tab,"\r",rec)
fields1:=GetLine(rec,1)
fields2:=GetLine(rec,2)
fields3:=getline(rec,3)
(4)在交互图标中添加文字显示:
学号:{fields1}
姓名:{fields2}
性别:{fields3}
(5)在交互图标右侧的3个响应方式为按钮的计算图标中分别输入代码:
前一记录:
if rec_n>1 then
rec_n:=rec_n-1
end if
后一记录:
if linecount>rec_n then
rec_n:=rec_n+1
end if
退出:quit()
(6)运行结果如图4所示,通过单击按钮前一记录和后一记录,可进行所有记录的浏览。单击退出按钮结束程序。
3 以动态方式访问SQL数据库中的数据
Authorware7提供了一个支持标准ODBC 的数据库接口—ODBC.U32,从而利用MicroSoft ODBC接口和标准的SQL语言实现对关系数据库的添加、删除和查询等基本操作[3]。
Authorware 执行数据库操作时,首先调用外部的U32函数(ODBC.U32),通过数据源或数据库连接字符串与ODBC驱动程序建立联系,由ODBC驱动程序连接并打开数据库;然后用标准 SQL命令通过U32函数的操作访问数据库,再对返回的记录集通过调用某些系统函数可以获取某条记录的某个字段的值;最后调用U32函数关闭数据库连接,结束对数据库的访问[2]。
3.1 控制面板中ODBC(32位)数据源管理的配置
进行SQL数据源的配置有手动方式和调用“tMsdsn.u32”函数实现 ODBC 数据源的自动配置自动方式,自动方式见参考文献[2]。本文介绍了手动配置过程。在控制面板中,单击图5中的ODBC(32位)项。在弹出的ODBC数据源管理器中,如图6所示,单击添加按钮,在创建数据源的对话框中选择数据源驱动程序为SQL Native Client,单击完成,进入到如图7所示的创建SQL Server新数据源窗口,给数据源命名、选择服务器、SQL登录方式以及默认数据库(如本文中数据库studb),如图8所示,并进行数据源连接测试,确定连接测试成功。
3.2 在Authorware7中操作数据库
利用ODBC.U32的3个函数对SQL数据库打开、执行SQL命令、关闭SQL数据库操作。
ODBCHandle:=ODBCOPEN(WindowHandl,ErrorVar,Database,User,password)
ODBCdata:=ODBCExecute(ODBCHandle,SQLstring)
ODBCClose(ODBCHandle)
其中,SQLstring为需要执行的SQL命令,ODBCExecute()的执行结果为结果字符串,对其内容的处理方式同文本方式。
4 动态访问SQL数据实例
设计流程线如图9所示。
(1)在名为“窗口大小”的计算图标输入代码:
ResizeWindow(240,150)
(2)在名为“odbc代码”的计算图标内输入代码:
database:="sql_studb"
sqlstring:="select sno,sname,sex from student"
odbcchandle:=ODBCOpen(WindowHandle,"odbccerror",database,"","")
odbcdata:=ODBCExecute(odbcchandle,sqlstring)
ODBCClose(odbcchandle)
(3)在名为“统计记录数”的计算图标内输入:
recordcount:=LineCount(odbcdata)
n:=1
(4)在交互图标的附加计算图标内输入:
rec:=GetLine(odbcdata,n)
rec:=Replace(Tab,"\r",rec)
fieldcount:=LineCount(rec)
field1:=GetLine(rec,1)
field2:=GetLine(rec,2)
field3:=GetLine(rec,3)
(5)在交互图标右则的各计算图标内容同静态案例一样。
(6)运行结果如图10所示。
本文根据microsoft ODBC接口、Authorware提供的ODBC.U32系统函数、Authorware中关于file的相关函数以及SQL Server理论,探讨并研究了Authorware中静态和动态方式访问SQL Server数据库的方法,给出Authorware 7中静态和动态访问SQL数据库的实现方法。以学生成绩数据库studb为SQL数据源,提供了在Authorware7中分别以静态和动态方式访问SQL数据库的详细操作过程,为需要在Authorware中访问SQL数据库数据的多媒体制作者提供参考。
参考文献
[1] 王冬.Authorware程序访问和操作数据库初探[J].琼州大学 学报,2006,13(2):113.
[2] 王彦丽.Authorware 基于 ODBC 技术的数据库编程[J].电脑知识与技术,2008, 4(3) :623-625.
[3]朱诗兵,李迎春.Authorware 数据库编程[M].北京:清华大学出版社,2000.
[4] 梁培文,叶小平,周奇.基于Authorware实现的多媒体数据库管理系统的研究[J].中山大学(自然科学版),2008(47):7.