摘 要: 根據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.