《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > Authorware7中訪問SQL數(shù)據(jù)庫數(shù)據(jù)的兩種方法研究
Authorware7中訪問SQL數(shù)據(jù)庫數(shù)據(jù)的兩種方法研究
2014年微型機與應(yīng)用第17期
范翠香
西安理工大學(xué),陜西 西安 710082
摘要: 根據(jù)Microsoft ODBC接口、Authorware提供的ODBC.U32系統(tǒng)函數(shù)、Authorware中關(guān)于file的相關(guān)函數(shù)以及SQL Server理論,探討并研究了Authorware中靜態(tài)和動態(tài)方式訪問SQL Server數(shù)據(jù)庫的方法,給出了Authorware 7中靜態(tài)和動態(tài)訪問SQL數(shù)據(jù)庫的實現(xiàn)方法,并分別給出了較為詳細的實例操作過程。
Abstract:
Key words :

  摘 要: 根據(jù)Microsoft ODBC接口、Authorware提供的ODBC.U32系統(tǒng)函數(shù)、Authorware中關(guān)于file的相關(guān)函數(shù)以及SQL Server理論,探討并研究了Authorware中靜態(tài)和動態(tài)方式訪問SQL Server數(shù)據(jù)庫的方法,給出了Authorware 7中靜態(tài)和動態(tài)訪問SQL數(shù)據(jù)庫的實現(xiàn)方法,并分別給出了較為詳細的實例操作過程。

  關(guān)鍵詞: Authorware;SQL Server;數(shù)據(jù)庫

  課件和知識測驗等。在這些Authorware的多媒體作品中,經(jīng)常需要引用SQL Server數(shù)據(jù)庫中的數(shù)據(jù)。有時對引用數(shù)據(jù)只是一種單一靜態(tài)展示,有時需要引用實時SQL數(shù)據(jù)并且對引用SQL數(shù)據(jù)庫進行編輯修改,即以動態(tài)方式訪問SQL數(shù)據(jù)。這兩種引用SQL數(shù)據(jù)庫的方法在各種Authorware教材中或是不涉及或是涉及很少。本文就Authorware中靜態(tài)方式和動態(tài)方式引用SQL數(shù)據(jù)庫數(shù)據(jù)的實現(xiàn)方法進行探討并給出詳細的操作實例。

1 以靜態(tài)方式引用SQL數(shù)據(jù)庫中的數(shù)據(jù)

  在Authorware的多媒體作品中有時候僅僅想引用并展示SQL的數(shù)據(jù)庫的查詢結(jié)果,并不需要對數(shù)據(jù)庫數(shù)據(jù)進行其他操作,因此可以用靜態(tài)方式引用SQL數(shù)據(jù)庫中的數(shù)據(jù)。實現(xiàn)方法是將SQL數(shù)據(jù)庫查詢結(jié)果轉(zhuǎn)換成文本文件,再利用Authorware提供的內(nèi)部函數(shù)訪問文本文件內(nèi)容,從而獲得查詢結(jié)果集中的記錄及各字段的值。

  1.1 在SQL Server中生成查詢結(jié)果的文本文件

  方法1:在SQL中用命令方式實現(xiàn)

  (1)在SQL Server Management Studio 中執(zhí)行如下命令,啟動 show advanced options 項并設(shè)置為 1后, 再開啟xp_cmdshell(注:xp_cmdshell 擴展存儲過程將命令字符串作為操作系統(tǒng)命令 shell 執(zhí)行,并以文本行的形式返回所有輸出)。

  EXEC sp_configure 'show advanced options', 1

  GO

  RECONFIGURE

  GO

  EXEC sp_configure 'xp_cmdshell', 1

  GO

  RECONFIGURE

  GO

  (2)通過bcp將SQL查詢的結(jié)果保存在指定的文本文件中。

  EXECmaster.dbo.xp_cmdshell 'bcp "select sno,sname,sex from studb.dbo.student" queryout "F:\authorware\student.txt" -c -T'

  這時保存查詢結(jié)果的文本文件student.txt已經(jīng)存在了,該文件中各字段之間的分隔符為Tab。

  方法2:在SQL Server中用操作方式實現(xiàn)[3]

 ?。?)在SQL Server Management Studio工具菜單欄的選項中,將查詢結(jié)果的顯示方式改為以文本格式顯示結(jié)果,并將輸出格式的分隔符設(shè)置為置表符分隔。

 ?。?)重新啟動服務(wù)器后,執(zhí)行相應(yīng)的查詢命令:

  Use studb

  Go

  selectsno,sname,sex from student

  go

  在顯示結(jié)果的窗格內(nèi)將最后一個非記錄行刪除。

  (3)擊鼠標右鍵,選擇“將結(jié)果另存為”命令,保存查詢結(jié)果為txt文件。

 ?。?)打開該文本文件后,選擇“另存為”命令,在彈出的另存為對話框中,選擇編碼為ANSI,如圖1所示,單擊保存按鈕。

001.jpg

  1.2 對文本文件進行讀寫操作[3-4]

 ?。?)用ReadExtFile(“文本文件名”)函數(shù)讀取文本文件的內(nèi)容,函數(shù)結(jié)果為文本文件的內(nèi)容字符串。

  Filestring:=ReadExtFile(“文件路徑及文件名”)

  (2)用LineCount()函數(shù)獲取整個結(jié)果集的記錄行數(shù),默認分隔符為回車。

  Number:=LineCounr(“Filestring”)

 ?。?)用GetLine() 函數(shù)獲取字符串的第n行記錄,結(jié)果仍為一個字符串。

  recordstring:=GetLine(“Filestring”,n)

 ?。?)用replace()函數(shù)將記錄行中各字段間的分隔符Tab替換為回車符,結(jié)果仍為字符串。

  Rec:=Replace(Tab,”\r”,recordstring)

 ?。?)根據(jù)實際需要用GetLine()函數(shù)分別獲取該記錄中第m個字段值,返回字段值的字符串。

  fields1:=GetLine(rec,m)

  (6)在Authorware的顯示圖標中及文字工具顯示所需的字段值。

2 靜態(tài)訪問SQL數(shù)據(jù)實例

  文中的示例數(shù)據(jù)庫是一個學(xué)生成績管理數(shù)據(jù)庫studb,其中有一個存放著學(xué)生基本信息的二維關(guān)系表stduent,如圖2所示。

002.jpg

  設(shè)計流程線如圖3所示。

003.jpg

 ?。?)在設(shè)置窗口大小的計算圖標中輸入代碼:ResizeWindow(240,150)。

 ?。?)再讀取文本文件的計算圖標中輸入代碼:

  txtstring:=ReadExtFile("F:\\student.txt")

  linecount:=LineCount(txtstring)

  rec_n:=1

 ?。?)在顯示記錄的交互圖標的附加計算圖標中輸入代碼:

  rec:=GetLine(txtstring, rec_n)

  rec:=Replace(Tab,"\r",rec)

  fields1:=GetLine(rec,1)

  fields2:=GetLine(rec,2)

  fields3:=getline(rec,3)

 ?。?)在交互圖標中添加文字顯示:

  學(xué)號:{fields1}

  姓名:{fields2}

  性別:{fields3}

 ?。?)在交互圖標右側(cè)的3個響應(yīng)方式為按鈕的計算圖標中分別輸入代碼:

  前一記錄:

  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)運行結(jié)果如圖4所示,通過單擊按鈕前一記錄和后一記錄,可進行所有記錄的瀏覽。單擊退出按鈕結(jié)束程序。

004.jpg

3 以動態(tài)方式訪問SQL數(shù)據(jù)庫中的數(shù)據(jù)

  Authorware7提供了一個支持標準ODBC 的數(shù)據(jù)庫接口—ODBC.U32,從而利用MicroSoft ODBC接口和標準的SQL語言實現(xiàn)對關(guān)系數(shù)據(jù)庫的添加、刪除和查詢等基本操作[3]。

  Authorware 執(zhí)行數(shù)據(jù)庫操作時,首先調(diào)用外部的U32函數(shù)(ODBC.U32),通過數(shù)據(jù)源或數(shù)據(jù)庫連接字符串與ODBC驅(qū)動程序建立聯(lián)系,由ODBC驅(qū)動程序連接并打開數(shù)據(jù)庫;然后用標準 SQL命令通過U32函數(shù)的操作訪問數(shù)據(jù)庫,再對返回的記錄集通過調(diào)用某些系統(tǒng)函數(shù)可以獲取某條記錄的某個字段的值;最后調(diào)用U32函數(shù)關(guān)閉數(shù)據(jù)庫連接,結(jié)束對數(shù)據(jù)庫的訪問[2]。

  3.1 控制面板中ODBC(32位)數(shù)據(jù)源管理的配置


005.jpg

006.jpg

  進行SQL數(shù)據(jù)源的配置有手動方式和調(diào)用“tMsdsn.u32”函數(shù)實現(xiàn) ODBC 數(shù)據(jù)源的自動配置自動方式,自動方式見參考文獻[2]。本文介紹了手動配置過程。在控制面板中,單擊圖5中的ODBC(32位)項。在彈出的ODBC數(shù)據(jù)源管理器中,如圖6所示,單擊添加按鈕,在創(chuàng)建數(shù)據(jù)源的對話框中選擇數(shù)據(jù)源驅(qū)動程序為SQL Native Client,單擊完成,進入到如圖7所示的創(chuàng)建SQL Server新數(shù)據(jù)源窗口,給數(shù)據(jù)源命名、選擇服務(wù)器、SQL登錄方式以及默認數(shù)據(jù)庫(如本文中數(shù)據(jù)庫studb),如圖8所示,并進行數(shù)據(jù)源連接測試,確定連接測試成功。

  3.2 在Authorware7中操作數(shù)據(jù)庫

  利用ODBC.U32的3個函數(shù)對SQL數(shù)據(jù)庫打開、執(zhí)行SQL命令、關(guān)閉SQL數(shù)據(jù)庫操作。

  ODBCHandle:=ODBCOPEN(WindowHandl,ErrorVar,Database,User,password)

  ODBCdata:=ODBCExecute(ODBCHandle,SQLstring)

  ODBCClose(ODBCHandle)

  其中,SQLstring為需要執(zhí)行的SQL命令,ODBCExecute()的執(zhí)行結(jié)果為結(jié)果字符串,對其內(nèi)容的處理方式同文本方式。

4 動態(tài)訪問SQL數(shù)據(jù)實例

  設(shè)計流程線如圖9所示。

009.jpg

 ?。?)在名為“窗口大小”的計算圖標輸入代碼:

  ResizeWindow(240,150)

 ?。?)在名為“odbc代碼”的計算圖標內(nèi)輸入代碼:

  database:="sql_studb"

  sqlstring:="select sno,sname,sex from student"

  odbcchandle:=ODBCOpen(WindowHandle,"odbccerror",database,"","")

  odbcdata:=ODBCExecute(odbcchandle,sqlstring)

  ODBCClose(odbcchandle)

  (3)在名為“統(tǒng)計記錄數(shù)”的計算圖標內(nèi)輸入:

  recordcount:=LineCount(odbcdata)

  n:=1

 ?。?)在交互圖標的附加計算圖標內(nèi)輸入:

  rec:=GetLine(odbcdata,n)

  rec:=Replace(Tab,"\r",rec)

  fieldcount:=LineCount(rec)

  field1:=GetLine(rec,1)

  field2:=GetLine(rec,2)

  field3:=GetLine(rec,3)

 ?。?)在交互圖標右則的各計算圖標內(nèi)容同靜態(tài)案例一樣。

  (6)運行結(jié)果如圖10所示。

010.jpg

  本文根據(jù)microsoft ODBC接口、Authorware提供的ODBC.U32系統(tǒng)函數(shù)、Authorware中關(guān)于file的相關(guān)函數(shù)以及SQL Server理論,探討并研究了Authorware中靜態(tài)和動態(tài)方式訪問SQL Server數(shù)據(jù)庫的方法,給出Authorware 7中靜態(tài)和動態(tài)訪問SQL數(shù)據(jù)庫的實現(xiàn)方法。以學(xué)生成績數(shù)據(jù)庫studb為SQL數(shù)據(jù)源,提供了在Authorware7中分別以靜態(tài)和動態(tài)方式訪問SQL數(shù)據(jù)庫的詳細操作過程,為需要在Authorware中訪問SQL數(shù)據(jù)庫數(shù)據(jù)的多媒體制作者提供參考。

參考文獻

  [1] 王冬.Authorware程序訪問和操作數(shù)據(jù)庫初探[J].瓊州大學(xué) 學(xué)報,2006,13(2):113.

  [2] 王彥麗.Authorware 基于 ODBC 技術(shù)的數(shù)據(jù)庫編程[J].電腦知識與技術(shù),2008, 4(3) :623-625.

  [3]朱詩兵,李迎春.Authorware 數(shù)據(jù)庫編程[M].北京:清華大學(xué)出版社,2000.

  [4] 梁培文,葉小平,周奇.基于Authorware實現(xiàn)的多媒體數(shù)據(jù)庫管理系統(tǒng)的研究[J].中山大學(xué)(自然科學(xué)版),2008(47):7.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。