国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

數(shù)據(jù)庫應(yīng)用程序常見T-SQL和PL/SQL

2024-07-21 02:32:55
字體:
供稿:網(wǎng)友
   許多軟件公司都理解開發(fā)不依靠于特定數(shù)據(jù)庫類型(例如,Oracle , SQL Server ,DB2)的應(yīng)用程序的重要性,它可以讓客戶們選擇自己習(xí)慣的平臺。一般來說,軟件開發(fā)人員都能夠識別出他們的負(fù)責(zé)數(shù)據(jù)庫維護(hù)的客戶,和必須使用現(xiàn)有平臺和個(gè)性化的客戶。   關(guān)于Oracle和SQL Server之間的區(qū)別,已經(jīng)有很多篇文章從企業(yè)的角度和數(shù)據(jù)庫治理員的角度出發(fā)描寫了兩者之間的一般差別。在這篇文章里面,我將會(huì)從應(yīng)用程序的角度向你描述SQL Server 和Oracle平臺之間的區(qū)別,并且將會(huì)討論開發(fā)不依靠于數(shù)據(jù)庫環(huán)境的應(yīng)用程序的幾種可能的方法。  與此同時(shí),我不會(huì)再論討對于應(yīng)用程序來說,兩個(gè)平臺之間顯而易見的區(qū)別,例如表的分割和索引。  定義通用接口和語言  有很少的幾種通用語言和接口可以讓應(yīng)用程序不依靠于數(shù)據(jù)庫,想來也可以以同樣的方式應(yīng)用在關(guān)系型數(shù)據(jù)庫上面:  ANSI是美國國家標(biāo)準(zhǔn)局定義的,這是一家志愿者成員的組織(用私人基金運(yùn)轉(zhuǎn)),他們在有關(guān)設(shè)備和程序等廣泛領(lǐng)域內(nèi)開發(fā)了國家承認(rèn)的標(biāo)準(zhǔn)。在數(shù)據(jù)庫領(lǐng)域,ANSI定義了編寫SQL 命令的標(biāo)準(zhǔn),假設(shè)命令可以運(yùn)行在任何的數(shù)據(jù)庫上,而不需要更改命令的語法。  ODBC是開放數(shù)據(jù)庫連接(ODBC)接口,微軟定義的,它可以讓應(yīng)用程序訪問數(shù)據(jù)庫治理系統(tǒng)(DBMS)中的數(shù)據(jù),使用SQL 作為訪問數(shù)據(jù)的標(biāo)準(zhǔn)。ODBC答應(yīng)最大的互聯(lián)性,這意味著一個(gè)單個(gè)的應(yīng)用程序可以訪問不同的數(shù)據(jù)庫治理系統(tǒng)。然后,應(yīng)用程序終端用戶可以添加開放數(shù)據(jù)庫連接(ODBC)數(shù)據(jù)庫驅(qū)動(dòng)來將應(yīng)用程序與他們所選擇的數(shù)據(jù)庫治理系統(tǒng)鏈接上。  OLEDB,是ODBC的繼續(xù)者,是一組答應(yīng)例如基于VB,C++,access等任何可以連接到類似SQL Server ,Oracle ,DB2,MySQL等后臺的“前臺”的軟件組件。在許多種情況下,OLEDB組件都比原有的ODBC提供了好得多的性能。  JDBC(java數(shù)據(jù)庫連接)應(yīng)用程序接口是Java編程語言和廣泛范圍的數(shù)據(jù)庫,SQL 數(shù)據(jù)庫和其他表列數(shù)據(jù)源(例如電子表格或者普通文本文件)之間,進(jìn)行不依靠于數(shù)據(jù)庫的連接的行業(yè)標(biāo)準(zhǔn)。JDBD應(yīng)用程序接口為基于SQL的數(shù)據(jù)庫訪問提供了調(diào)用級別的應(yīng)用程序接口。  真實(shí)世界中的通用接口  不幸的是,并不是所有數(shù)據(jù)庫級別的命令都是ANSI,每個(gè)數(shù)據(jù)庫平臺都有自己的擴(kuò)展功能。ANSI,或者通用接口,一般來說都代表著幾本功能,因此也可能意味著喪失了性能方面的競爭力。對于小型數(shù)據(jù)庫和小型應(yīng)用程序來說,要維護(hù)對數(shù)據(jù)庫的通用訪問是簡單的,但是當(dāng)數(shù)據(jù)庫和/或應(yīng)用程序變得越來越大,越來越復(fù)雜,你就不得不向代碼中添加功能。  示例:  在兩個(gè)平臺上以同種方式編寫的命令: Insert into Table_1 values (1,'Michelle')
Update Table_2 set Col_1 = 2
Delete from Table_3 where Col_3 like 'Michelle%'  在兩個(gè)平臺上不是以同種方式編寫的命令: Select getdate()
Select case Fld when 1 then 'a'
                      When 2 then 'b'
                      Else 'c'
                      End
From Table_4
Oracle
Select sysdate from dual
Select DECODE (Fld, 1, 'a', 2, 'b', 'c')
From Table_4  下面的兩篇文章包括了對Oracle PL/SQL命令和T-SQL命令比較的列表:  · 從Oracle移植到SQL Server  · 開始學(xué)SQL: SQL Server和Oracle之間的區(qū)別
    可能的解決方案:  我曾見過幾種對數(shù)據(jù)庫互操作性問題的可能的解決方案:       # 解決方案描述優(yōu)點(diǎn) 缺點(diǎn) 1 處理兩種版本的應(yīng)用程序——一個(gè)是針對Oracle的,另一個(gè)是針對SQL Server的。 1.不需要處理SQL命令的版本 1. 復(fù)制代碼—必須在兩個(gè)版本上應(yīng)用所有的變化。 2 盡可能地使用通用語言(ANSI/ODBC/OLEDB/…),并且在應(yīng)用程序用IF命令處理不同的命令 1. 處理單個(gè)應(yīng)用程序 1. 假如有非ANSI的命令,代碼就會(huì)變得越來越大, 這會(huì)影響應(yīng)用程序的性能 2. 代碼可能會(huì)因?yàn)楹芏嗟腎F 語句變得復(fù)雜。 3 把數(shù)據(jù)庫命令保存在數(shù)據(jù)庫或者INI文件中,當(dāng)應(yīng)用程序開始的時(shí)候?qū)⑵渥x入緩存。 1. 應(yīng)用程序中不需要 IF命令了。2. SQL 命令可以任意修改,并且不需要在修改之后重新編譯應(yīng)用程序。 1. SQL命令治理可能變得更加復(fù)雜。  選擇哪個(gè)解決方案?  這個(gè)問題的答案依靠于應(yīng)用程序的特性和平臺。每個(gè)解決方案都易于實(shí)現(xiàn),這里沒有最好的解決方案。  結(jié)論:  假如你想要將你的應(yīng)用程序開發(fā)成為不依靠數(shù)據(jù)庫的,你就應(yīng)該仔細(xì)的計(jì)劃解決方案。考慮到應(yīng)用程序在數(shù)據(jù)庫級別上的復(fù)雜性,還有所需代碼的總量。在計(jì)劃過程中,考慮到應(yīng)用程序未來的發(fā)展是至關(guān)重要的。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 乾安县| 治县。| 沐川县| 封丘县| 徐州市| 垣曲县| 科技| 宣城市| 遵义市| 句容市| 乌拉特中旗| 攀枝花市| 固阳县| 徐州市| 东乡族自治县| 若尔盖县| 通许县| 高青县| 萍乡市| 稷山县| 会泽县| 苏州市| 招远市| 宜州市| 达拉特旗| 宽甸| 集安市| 道真| 潜江市| 余庆县| 类乌齐县| 迁西县| 冀州市| 苏尼特左旗| 铁岭市| 洞口县| 灵石县| 武义县| 忻城县| 博爱县| 东海县|