999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

開源軟件在數據庫課程中的應用

2012-04-29 00:44:03陸廷榮

陸廷榮

摘要:為解決目前高校數據庫課程講授嵌入式SQL面臨的問題,本文闡述了用開源數據庫PostgreSQL講授嵌入式SQL的過程。用開源數據庫PostgreSQL講授嵌入式SQL,既充分說明了嵌入式SQL的概念、工作原理、執行過程,還介紹了開源軟件的概念,展示了開源軟件用于教學的一個良好范例。

關鍵詞:嵌入式SQL;PostgreSQL;數據庫課程;開源軟件

中圖分類號:G642.3文獻標識碼:A文章編號:1002-4107(2012)02-0042-02

一、引言

SQL(Structured Query Language)語言是標準化的數據庫操作語言[1]。嵌入式SQL是ODBC(Open Data Base Connectivity)、JDBC(Java Data Base Connectivity)等數據庫訪問接口標準出現之前的編程語言訪問數據庫的編碼規范[2],是指將SQL語句嵌入到宿主語言(Host language)中,比如,嵌入到C/C++、Java等編程語言中,既利用SQL語言的數據庫操作能力,又克服SQL語言無流程控制語句無法實現復雜邏輯的限制。嵌入式SQL是數據庫課程中的重要內容[3]。

目前高校數據庫課程的上機實驗環境多數是MS Windows平臺上的MS SQL Server 2005(Express)。MS

SQL Server 2005(Express)已不再支持嵌入式SQL。MS Windows平臺上的其他主流數據庫管理系統如Oracle、DB2、MS SQL Server 2000等支持嵌入式SQL,但Oracle、DB2、MS SQL Server 2000等都是有版權保護的商品數據庫管理系統,使用存在限制,并且MS SQL Server 2000已是十年前的過時產品,實際生產系統已很少應用。因此,我們把講授嵌入式SQL的上機實驗環境轉向可自由使用的開源數據庫。

目前主流開源數據庫管理系統有MySQL[4]、PostgreSQL[5]、Ingres[6]、Firebird[7]、SQLite[8]等。MySQL是使用最廣泛的開源數據庫管理系統,但目前版本不支持嵌入式SQL。Firebird是輕型數據庫管理系統,是否支持嵌入式SQL缺乏文獻支持。SQLite是嵌入式數據庫管理系統,同樣不支持嵌入式SQL。具有同一歷史淵源的PostgreSQL、Ingres支持嵌入式SQL,根據數據庫支持工具的豐富程度、文獻豐富程度、開源項目的活躍程度,最后作者選擇PostgreSQL作為講授嵌入式SQL的上機實驗環境。

下面介紹用開源數據庫PostgreSQL講授嵌入式SQL處理的關鍵過程。

二、嵌入式SQL的處理過程

嵌入式SQL的處理過程一般如下所述。首先,使用具體DBMS的依賴具體宿主語言的預處理器將嵌入式SQL的宿主語言源程序轉換成合法宿主語言源程序,相應的嵌入式SQL語句轉換成宿主語言函數調用。再使用宿主語言編譯器將預處理過的嵌入式SQL的宿主語言源程序編譯成目標代碼。最后使用宿主語言鏈接器將目標代碼與具體DBMS的函數庫鏈接生成能訪問數據庫的可執行代碼。嵌入式SQL的處理過程如圖1所示。

三、嵌入式SQL在PostgreSQL數據庫中的

處理過程

本文中操作系統平臺是MS Windows;DBMS使用PostgreSQL 9.0;C編譯器使用開源軟件MinGW[9] C編譯

器gcc;C鏈接器使用MinGW C鏈接器ld。

預處理器使用pgtypes library將嵌入式SQL的數據類型映射成C語言數據類型。

嵌入式SQL預處理器將嵌入式SQL C源程序中的嵌入式SQL語句轉換成函數調用,使其成為一個純粹的C源程序。純粹的C源程序用C編譯器編譯成目標代碼。目標代碼的鏈接階段要包含實現嵌入式SQL語句轉換成的函數調用的函數庫。

PostgreSQL數據庫中嵌入式SQL C源程序文件的擴展名通常為“.pgc”,比如,esql.pgc。

(一)嵌入式SQL預處理階段

PostgreSQL數據庫的嵌入式SQL預處理器是ecpg,預處理階段的命令行命令是,ecpg esql.pgc。

在正確預處理后將生成宿主語言源程序——同名的C源程序,esql.c。

(二)宿主語言編譯階段

使用MinGW C編譯器gcc,gcc -I“D:MinGWincl-

ude” -I“C:Program FilesstgreSQL9.0include” -c esql.c。

其中“-I”開關用于指示編譯過程所需庫文件的查找路徑。“-c”開關用于指示只編譯成目標代碼而不自動執行鏈接過程生成可執行文件。

在正確編譯后將生成同名的目標代碼文件,esql.o。

(三)目標代碼鏈接階段

使用MinGW C鏈接器ld,ld -o esql.exe esql.o -L “C:Program FilesPostgreSQL9.0lib”lecpg。

其中“-o”開關用于指示生成可執行文件名,否則默認將生成UNIX/Linux規范的可執行文件名。“-L”開關用于指示編譯過程所需庫文件的查找路徑。“-l”開關用于指示鏈接的庫文件。

在正確編譯后將生成同名的可執行代碼文件,esql.exe。

本文分析了目前高校數據庫課講授嵌入式SQL面臨的問題,討論了用開源數據庫PostgreSQL講授嵌入式SQL的過程。用開源數據庫PostgreSQL講授嵌入式SQL,既充分說明了嵌入式SQL的概念、工作原理、執行過程,還同時介紹了開源軟件的基本概念,展示了開源軟件用于教學的一個良好范例。

參考文獻:

[1]SO/IEC 9075-1:2008 Information technology—Dat-

abase languages—SQL—Part 1:Framework(SQL/Fra-

mework)[EB/OL].http://www.iso.org/iso/catalogue_

detail.htm?csnumber=45498,2011.

[2]ISO/IEC 9075-3:2008 Information technology—

Database languages—SQL—Part 3:Call-Level Int-

erface(SQL/CLI)[EB/OL].http://www.iso.org/iso/

iso_catalogue/catalogue_tc/catalogue_detail.htm?

csnumber=38641,2011.

[3]王珊,薩師煊.數據庫系統概論(第四版)[M].高等教育

出版社,2006.

[4]MySQL[EB/OL].http://www.mysql.com/,2011.

[5]PostgreSQL[EB/OL].http://postgresql.org/,2011.

[6]Ingres[EB/OL].http://www.ingres.com/,2011.

[7]Firebird[EB/OL].http://www.firebirdsql.org/,2011.

[8]SQLite[EB/OL].http://www.sqlite.org/,2011.

[9]MinGW|Minimalist GNU for Windows[EB/OL].http:

//www.mingw.org/,2011.

主站蜘蛛池模板: 亚洲精品天堂自在久久77| 久久中文字幕不卡一二区| 日韩区欧美国产区在线观看| 国产性爱网站| 国产一区二区三区精品久久呦| 国产剧情一区二区| 高潮毛片无遮挡高清视频播放| 亚洲色图另类| 老色鬼久久亚洲AV综合| 色综合天天视频在线观看| 国产毛片高清一级国语 | 亚洲六月丁香六月婷婷蜜芽| 午夜高清国产拍精品| 国产大全韩国亚洲一区二区三区| 91免费观看视频| 午夜国产在线观看| 国产高清在线精品一区二区三区| 久久毛片网| 久久久久亚洲精品成人网| 亚洲国产91人成在线| 欧美成人a∨视频免费观看| 亚洲国产无码有码| 天天躁夜夜躁狠狠躁图片| 91国语视频| 九九热免费在线视频| 国产中文在线亚洲精品官网| 午夜毛片福利| 色婷婷色丁香| 在线不卡免费视频| 四虎精品免费久久| A级全黄试看30分钟小视频| 国内精品免费| 国内a级毛片| 亚洲精品大秀视频| 一本大道香蕉久中文在线播放| 亚洲第一网站男人都懂| 久久伊人操| 亚洲国产精品人久久电影| 亚洲成在人线av品善网好看| 美女视频黄频a免费高清不卡| 一级香蕉视频在线观看| 国产性爱网站| 国产精品成| 日韩123欧美字幕| 精品人妻AV区| 青青国产视频| 国产成人精品午夜视频'| 成人在线观看不卡| 日韩精品一区二区三区免费| 丝袜国产一区| 无码人中文字幕| 国产超碰在线观看| 亚洲综合色区在线播放2019| 欧美精品一区在线看| 中文字幕首页系列人妻| 伊人久久综在合线亚洲2019| 国产日本视频91| 中文字幕亚洲另类天堂| 国产精品久久精品| 一级全黄毛片| www.av男人.com| 色综合婷婷| 欧美a网站| 日本成人一区| 爽爽影院十八禁在线观看| 国产一区二区三区免费观看| 国产在线自乱拍播放| 国产视频大全| 亚洲精品高清视频| 国产视频a| 色天堂无毒不卡| 久久亚洲精少妇毛片午夜无码| 久久网欧美| 亚洲成在线观看| 超碰91免费人妻| 青青草91视频| 国产最爽的乱婬视频国语对白| 亚洲精品无码不卡在线播放| 亚洲欧美人成人让影院| 国产女人在线视频| 男女性色大片免费网站| 亚洲精品自拍区在线观看|