張亞芬
(江蘇省常州技師學(xué)院 江蘇 257091)
Authorware軟件是一套多媒體開發(fā)工具,采用基于設(shè)計圖標(biāo)和流程圖的程序設(shè)計方法,具有可以不寫程序代碼的特色,即使是非專業(yè)人員也能夠使用它創(chuàng)作交互式多媒體程序。Authorware提供與開放式數(shù)據(jù)庫連接(ODBC)連接,也可以實現(xiàn)對數(shù)據(jù)庫的訪問。在 Authorware安裝目錄下的HelpShowMeODBC.A7P,這是一個 ODBC的范例,介紹了ODBC的概念、使用方法和一個實例。本文詳細(xì)分析這個小例子,借此介紹ODBC函數(shù)的使用方法。
ODBC開放式數(shù)據(jù)庫連接(Open Database Connectivity),是一種編程接口,能使應(yīng)用程序訪問以結(jié)構(gòu)化查詢語言SQL作為數(shù)據(jù)訪問標(biāo)準(zhǔn)的數(shù)據(jù)庫管理系統(tǒng)。Authorware在使用ODBC訪問數(shù)據(jù)庫之前,需保證正確安裝了相應(yīng)數(shù)據(jù)庫的驅(qū)動程序,而且建立了數(shù)據(jù)源(DSN)。
Authorware通過ODBC.U32提供了5個用于ODBC應(yīng)用的函數(shù)。ODBCOpen函數(shù)打開指定的數(shù)據(jù)源,并返回數(shù)據(jù)源句柄;ODBCExecute函數(shù)對數(shù)據(jù)庫進(jìn)行查詢并返回查詢結(jié)果;ODBCClose函數(shù)關(guān)閉指定的ODBC數(shù)據(jù)源;ODBCHandleCount函數(shù)計當(dāng)前使用的數(shù)據(jù)源句柄總數(shù);ODBCOpenDynamic與ODBCOpen函數(shù)類似,但允許在程序運行過程中動態(tài)創(chuàng)建數(shù)據(jù)源。
介紹完 ODBC.U32中提供的外部函數(shù)之后,我們來分析一下Authorware 7.0中的范例ODBC.a7p,圖1是該文件的流程圖及交互圖標(biāo)“Retrive Data”的響應(yīng)圖標(biāo)中的內(nèi)容。群組圖標(biāo)“Run to View Documentation”中以菜單的形式介紹了ODBC的概念、相關(guān)知識及使用方法。主菜單的最后一項就是實例演示,即交互圖標(biāo)“Retrive Data”完成的功能,我們僅僅對此進(jìn)行討論。該交互圖標(biāo)提供了四個按鈕響應(yīng),分別完成“Sorted Student List”(順序顯示學(xué)生記錄)、“Top Score ”(顯示最高分的記錄)、“Find Student By ID# ”(通過ID號查找學(xué)生記錄)、“Enter Student Data”(輸入學(xué)生記錄)四個功能。在ODBC.a7p中,最重要的部分其實是框架圖標(biāo)“Subroutines”,它完成Authorware與數(shù)據(jù)庫的連接并獲取數(shù)據(jù)。下面我們先分析交互圖標(biāo)四個響應(yīng)圖標(biāo)中的內(nèi)容:
圖1 圖標(biāo)
如圖2所示,在計算圖標(biāo)中設(shè)置 SQL字符串DB_SQLString,從General表中按字段LastName升序顯示字段LastName、FisrtName、M iddleName的內(nèi)容。導(dǎo)航圖標(biāo)將程序跳轉(zhuǎn)至框架結(jié)構(gòu)中“Execute SQL Command”,在那里程序?qū)⑦B接數(shù)據(jù)庫并獲取數(shù)據(jù)庫數(shù)據(jù),執(zhí)行結(jié)果通過DB_ODBCData變量返回到“Sorted Student List”,借助顯示圖標(biāo)“Display Data”顯示結(jié)果。
其余三個功能與該功能執(zhí)行過程相似,均是響應(yīng)圖標(biāo)中設(shè)置變量 DB_SQLString的內(nèi)容,然后程序轉(zhuǎn)到框架結(jié)構(gòu)中完成數(shù)據(jù)庫的訪問,并返回數(shù)據(jù)回到響應(yīng)圖標(biāo)顯示結(jié)果。
圖2 顯示結(jié)果
結(jié)構(gòu)與“Sort Student List”類似,計算圖標(biāo)中設(shè)置SQL字符串,從General表中按字段Score降序顯示字段LastName、Score的內(nèi)容。
本功能要略復(fù)雜一些,首先顯示所有記錄的 ID號,并將ID號設(shè)置為熱對象響應(yīng),用戶單擊其中某個ID號,顯示該ID號對應(yīng)記錄的所有信息,實現(xiàn)數(shù)據(jù)庫根據(jù)ID號查詢的功能。該功能的結(jié)構(gòu)如圖3所示。
圖3 功能結(jié)構(gòu)
程序首先完成顯示所有記錄的ID號的功能,計算圖標(biāo)中設(shè)置SQL字符串,從General表中按字段StudentID升序顯示字段StudentID的內(nèi)容。
然后將顯示圖標(biāo)“Display List”設(shè)置為熱對象響應(yīng),使得用戶可以通過單擊某個ID號執(zhí)行群組圖標(biāo)“Get Student ID#'s”的內(nèi)容,第3層中的計算圖標(biāo) “Get Student ID#'s”從General表中查找按字段StudentID等于用戶本次單擊的ID號的記錄并顯示該記錄字段LastName、FisrtName、M iddleName的內(nèi)容。
當(dāng)用戶單擊了某個ID號后,首先完成變量DB_SQLString的設(shè)置,再次連接ODBC,得到查詢結(jié)果(即某ID的記錄結(jié)果)后返回,擦除“Display List”(即ID號列表),最后顯示新結(jié)果(即某ID的記錄結(jié)果)。
本功能實現(xiàn)更新記錄和追加新記錄,結(jié)構(gòu)如圖4所示。程序首先執(zhí)行計算圖標(biāo)“Get Existing ID's”和導(dǎo)航圖標(biāo)“導(dǎo)航到Execute SQL Command”,顯示表 General中所有記錄中字段StudentID的內(nèi)容,其結(jié)果存放在變量DB_ODBCData中,群組圖標(biāo)“Update and Navigate”中將會使用該結(jié)果。
圖4 記錄
顯示圖標(biāo)“Prompts”顯示輸入時相關(guān)的提示信息,然后利用三個群組圖標(biāo)“Enter an ID number”、“ Enter a name”、“ Enter a score”完成一條記錄中字段 StudentID、FisrtName、M iddleName、LastName、Score內(nèi)容的輸入,主要通過文本輸入響應(yīng)來實現(xiàn),條件響應(yīng)可確保輸入內(nèi)容不為空,附屬計算圖標(biāo)對輸入的數(shù)據(jù)進(jìn)行處理(如將輸入的英文字母去除空格、轉(zhuǎn)化為大寫等等)。
圖5 處理結(jié)果
輸入數(shù)據(jù)后,程序執(zhí)行群組圖標(biāo)“Update and Navigate”,結(jié)構(gòu)如圖5所示。在用戶輸入數(shù)據(jù)之前,數(shù)據(jù)庫中所有記錄的StudnetID字段的內(nèi)容存放在變量DB_ODBCData中,用戶輸入的ID number存放在變量DB_StudnetID中,利用函數(shù)Find判斷DB_ODBCData中是否包含了DB_StudnetID,即判斷輸入的ID號是否已經(jīng)存在。若輸入的ID號存在,則用于更新記錄,若輸入的ID號不存在,則插入一個新記錄。接下來程序執(zhí)行導(dǎo)航圖標(biāo),訪問數(shù)據(jù)庫,執(zhí)行相應(yīng)的操作,即完成記錄的更新或插入新記錄。
最后,在計算圖標(biāo)“Get Student List”中設(shè)置字符串DB_SQLString,執(zhí)行導(dǎo)航圖標(biāo)訪問數(shù)據(jù)庫,返回最新的數(shù)據(jù)結(jié)果,利用擦除圖標(biāo)擦除舊的顯示結(jié)果,利用顯示圖標(biāo)顯示最新的結(jié)果。
分析完ODBC.a7p提供的四個功能后,我們討論框架結(jié)構(gòu)“Subroutines”,它是這個文件中最核心的部分,也是實現(xiàn)數(shù)據(jù)庫訪問的部分,如圖6所示,頁圖標(biāo)“Execute SQL Command”的結(jié)構(gòu)非常簡單,由四個計算圖標(biāo)和一個導(dǎo)航圖標(biāo)組成。
圖6 最終結(jié)果
計算圖標(biāo)“open Database” 完成數(shù)據(jù)庫的連接,若用戶已經(jīng)手工設(shè)置了ODBC數(shù)據(jù)源,第三行語句中的ODBCOpen函數(shù)實現(xiàn)連接數(shù)據(jù)庫;若用戶事先沒有進(jìn)行ODBC數(shù)據(jù)源的設(shè)置,此時 ODBCOpen函數(shù)返回值為0(即數(shù)據(jù)源連接失?。到y(tǒng)生成連接字符串 DB_ODBCConnet,利用倒數(shù)第二行語句中的ODBCOpenDynam ic函數(shù)實現(xiàn)動態(tài)連接數(shù)據(jù)源。所以本程序具有很好的移植性,拷貝至其他機器也可正常運行。
計算圖標(biāo)“Send SQL Command” 進(jìn)行查詢操作,并將查詢結(jié)果存于變量DB_ODBCData中。
計算圖標(biāo)“Check for ODBC Error”判斷是否連接出錯,借助DB_ODBCError變量保存ODBC操作過程中可能出現(xiàn)的錯誤信息,初值為空串。若其值不為空串時,則表示ODBC操作失敗。
計算圖標(biāo)“Close Database” 關(guān)閉數(shù)據(jù)源。
結(jié)束語:
Authorware 自帶的ODBC實例就介紹到這里,希望能對大家有所幫助。在實際使用中,我們可以把ODBC.a7p程序圖中除去群組圖標(biāo)“Run to View Documentation”部分外的所有圖標(biāo)復(fù)制到我們自己的程序中,然后將數(shù)據(jù)庫文件名、字段名作相應(yīng)的修改,就可以輕松完成ODBC的使用了。