專利名稱:一種生成及執(zhí)行sql語句的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本申請涉及計算機數(shù)據(jù)庫領(lǐng)域,尤其涉及一種生成及執(zhí)行SQL語句的方法和系統(tǒng)。
背景技術(shù):
隨著近些年信息化的加快,數(shù)據(jù)庫的應用越來越普遍。在現(xiàn)行的數(shù)據(jù)庫系統(tǒng)中,不同的數(shù)據(jù)庫對標準的sql語言的支持是不盡相同的,不同的數(shù)據(jù)庫往往都會出于某些商業(yè)目的或者性能上的要求,對標準的sql語言做一些擴展。本申請人在實現(xiàn)本申請實施例的過程中,發(fā)現(xiàn)現(xiàn)有技術(shù)存在如下技術(shù)問題:一、當用戶在書寫了一個sql語句時,難以保證其跨數(shù)據(jù)庫性。比如,在對時間的處理上,oracle數(shù)據(jù)庫和sqlserver數(shù)據(jù)庫就有很大的不同,特別地,若數(shù)據(jù)庫中有一個信息擁有時間記錄,在對其進行增加,修改,查詢過程時,兩種類型數(shù)據(jù)庫所使用的sql語句差別就更加明顯。二、當需要將數(shù)據(jù)庫的查詢結(jié)果做應用級別的展示的時候,往往需要對標準的sql語句做個性化的開發(fā)。比如,將查詢結(jié)果保存為XML,通過web服務發(fā)送給服務調(diào)用者?;蛘邔⒉樵兘Y(jié)果保存為微軟office支持的word文件、excel文件、cvs文件等等。而標準的sql語句不卻能夠滿足其個性化開發(fā)的需要。可見,現(xiàn)有技術(shù)中的sql語句不能夠?qū)崿F(xiàn)跨數(shù)據(jù)庫使用,同時也不能夠適用個性化的開發(fā)應用環(huán)境。
發(fā)明內(nèi)容
有鑒于此,本申請?zhí)峁┮环N生成SQL語句的方法,用以解決現(xiàn)有技術(shù)中存在SQL語句不能實現(xiàn)跨數(shù)據(jù)庫使用的問題。一方面,通過本申請的一個實施例,提供了如下技術(shù)方案:一種生成SQL語句的方法,應用在XML_SQL解析器中,所述XML_SQL解析器與類型不同的至少兩個數(shù)據(jù)庫相連接,所述方法包括:接收用戶輸入的XML_SQL語句,其中所述XML_SQL語句至少包括有XML控制標簽,所述控制標簽至少包括有所述至少兩個數(shù)據(jù)庫中的一個特定數(shù)據(jù)庫的數(shù)據(jù)庫地址,數(shù)據(jù)庫類型,數(shù)據(jù)庫驅(qū)動和數(shù)據(jù)庫語言; 判斷所述XML_SQL語句是否正確;在所述XML_SQL語句正確時,至少基于所述控制標簽,生成所述特定數(shù)據(jù)庫的可執(zhí)行SQL語句,以供所述特定數(shù)據(jù)庫執(zhí)行??蛇x的,在所述生成所述特定數(shù)據(jù)庫可執(zhí)行的SQL語句之后,所述方法還包括:接收所述特定數(shù)據(jù)庫執(zhí)行所述可執(zhí)行SQL語句而獲得的執(zhí)行結(jié)果。可選的,所述XML_SQL語句還包括:結(jié)果標簽,用來描述所述特定數(shù)據(jù)庫通過執(zhí)行所述可執(zhí)行SQL語句而獲得的執(zhí)行結(jié)果的文檔格式。
可選的,所述結(jié)果標簽中還包括有所述執(zhí)行結(jié)果的保存路徑,所述保存路徑為:所述特定數(shù)據(jù)庫本地路徑或遠程路徑。可選的,所述接收所述特定數(shù)據(jù)庫執(zhí)行所述可執(zhí)行SQL語句而獲得的執(zhí)行結(jié)果,具體為:接收所述特定數(shù)據(jù)庫執(zhí)行所述可執(zhí)行SQL語句而獲得的以所述文檔格式保存的文件??蛇x的,在所述接收所述特定數(shù)據(jù)庫執(zhí)行所述可執(zhí)行SQL語句而獲得的以所述文檔格式保存的文件之后,所述方法還包括:將所述文件發(fā)送到所述保存路徑??蛇x的,所述XML_SQL語句還包括:UI標簽,用來描述所述XML_SQL解析器與所述特定數(shù)據(jù)庫間的用戶操作。可選的,所述UI標簽具有一個value屬性。另一方面,通過本申請的另一實施例提供了如下技術(shù)方案:一種執(zhí)行SQL語句的方法,所述方法應用在一特定數(shù)據(jù)庫中,所述特定數(shù)據(jù)庫為至少兩個數(shù)據(jù)庫中的一個數(shù)據(jù)庫,其中,所述至少兩個數(shù)據(jù)庫與一 XML_SQL解析器連接,所述至少兩個數(shù)據(jù)庫為不同類型的數(shù)據(jù)庫,所述方法包括:接收所述XML_SQL解析器生成的與所述特定數(shù)據(jù)庫對應的SQL語句;執(zhí)行所述SQL語句,獲得執(zhí)行結(jié)果??蛇x的,所述SQL語句由所述XML_SQL解析器基于用戶輸入的XML_SQL語句而生成。可選的,所述XML_SQL語句包括:結(jié)果標簽,用來描述所述特定數(shù)據(jù)庫通過執(zhí)行所述可執(zhí)行SQL語句而獲得的執(zhí)行結(jié)果的文檔格式??蛇x的,在所述執(zhí)行所述SQL語句,獲得執(zhí)行結(jié)果之后,所述方法還包括:將所述執(zhí)行結(jié)果保存為所述文檔格式的文件;將所述文件發(fā)送給所述XML_SQL解析器。另一方面,本申請還提供過來如下技術(shù)方案:一種生成SQL語句的系統(tǒng),所述系統(tǒng)包括有XML_SQL解析器,所述XML_SQL解析器與類型不同的至少兩個數(shù)據(jù)庫相連接,所述系統(tǒng)包括:第一接收模塊,用于接收用戶輸入的XML_SQL語句,其中所述XML_SQL語句至少包括有XML控制標簽,所述控制標簽至少包括有所述至少兩個數(shù)據(jù)庫中的一個特定數(shù)據(jù)庫的數(shù)據(jù)庫地址,數(shù)據(jù)庫類型,數(shù)據(jù)庫驅(qū)動和數(shù)據(jù)庫語言;判斷模塊,用于判斷所述XML_SQL語句是否正確;生成模塊,用于在所述XML_SQL語句正確時,至少基于所述控制標簽,生成所述特定數(shù)據(jù)庫的可執(zhí)行的SQL語句,以供所述特定數(shù)據(jù)庫執(zhí)行。可選的,所述系統(tǒng)還包括:第二接收模塊,用于在所述生成所述特定數(shù)據(jù)庫可執(zhí)行的SQL語句之后,接收所述特定數(shù)據(jù)庫執(zhí)行所述可執(zhí)行SQL語句而獲得的執(zhí)行結(jié)果。再一方面,本申請還提供了如下技術(shù)方案:一種執(zhí)行SQL語句的系統(tǒng),應用在一特定數(shù)據(jù)庫中,所述特定數(shù)據(jù)庫為至少兩個數(shù)據(jù)庫中的一個數(shù)據(jù)庫,其中,所述至少兩個數(shù)據(jù)庫與一 XML_SQL解析器連接,所述至少兩個數(shù)據(jù)庫為不同類型的數(shù)據(jù)庫,所述系統(tǒng)包括:接收模塊,用于接收所述XML_SQL解析器生成的與所述特定數(shù)據(jù)庫對應的SQL語句;獲得模塊,用于執(zhí)行所述SQL語句,獲得執(zhí)行結(jié)果??蛇x的,所述XML_SQL語句包括:結(jié)果標簽,用來描述所述特定數(shù)據(jù)庫通過執(zhí)行所述可執(zhí)行SQL語句而獲得的執(zhí)行結(jié)果的文檔格式??蛇x的,所述系統(tǒng)還包括:保存模塊,用于在所述執(zhí)行所述SQL語句,獲得執(zhí)行結(jié)果之后,將所述執(zhí)行結(jié)果保存為所述文檔格式的文件;發(fā)送模塊,用于將所述文件發(fā)送給所述XML_SQL解析器。上述技術(shù)方案中的一個或多個技術(shù)方案,具有如下技術(shù)效果或優(yōu)點:一、通過采用本申請中生成的SQL語句的方法,解決了現(xiàn)有技術(shù)中標準SQL語句不能兼容類型不同的數(shù)據(jù)庫的技術(shù)問題,從而實現(xiàn)了跨數(shù)據(jù)庫類型的操作。二、進一步的,由于生成的SQL語句結(jié)合了 XML語言中的優(yōu)勢,使得生成的SQL語句能夠適應于一些有特殊性能要求的場景,擴展了 SQL語句的應用范圍。
圖1為本申請實施例中生成SQL語句的方法流程圖;圖2為本申請實施例中執(zhí)行SQL語句的方法流程圖;圖3為本申請實施例中生成SQL語句的系統(tǒng)模塊圖;圖4為本申請實施例中執(zhí)行SQL語句的系統(tǒng)模塊圖。
具體實施例方式下面結(jié)合各個附圖對本申請實施例技術(shù)方案的主要實現(xiàn)原理具體實施方式
及其對應能夠達到的有益效果進行詳細的闡述。請參考圖1,為本申請實施例中生成SQL語句的方法流程圖;步驟100,接收用戶輸入的XML_SQL語句;在具體的實施過程中,所述XML_SQL語句至少包括有XML控制標簽,在所述控制標簽中,所述控制標簽至少包括有兩個數(shù)據(jù)庫中的一個特定數(shù)據(jù)庫的數(shù)據(jù)庫地址,數(shù)據(jù)庫類型,數(shù)據(jù)庫驅(qū)動和數(shù)據(jù)庫語言等信息,下面以一個具體的控制標簽作為示例,進行說明??刂茦撕炇纠?<database url = “192.168.18.1” type = “oracle”driver = “oraclejdbc.driver.0racleDriver,,language = “ java,,resultsize = “ 1000” >orcl〈/database> ;在此標簽中數(shù)據(jù)庫的地址為192.168.18.1,數(shù)據(jù)庫類型為oracle,驅(qū)動為oracle, jdbc.driver.0racleDriver,而米用的語言則為 java ;所述XML_SQL語句還包括:結(jié)果標簽,用來描述所述特定數(shù)據(jù)庫通過執(zhí)行所述可執(zhí)行SQL語句而獲得的執(zhí)行結(jié)果的文檔格式。具體而言,該標簽是一個可選的標簽,如果是非查詢語句,比如刪除、插入、更新等語句,就可以不考慮使用此標簽,本申請所屬的技術(shù)人員可以根據(jù)實際的情況設置此類語句是否要返回結(jié)果信息,比如刪除了多少條信息,插入了多少條息等等。所述結(jié)果標簽中還包括有所述執(zhí)行結(jié)果的保存路徑,所述保存路徑為:所述特定數(shù)據(jù)庫本地路徑或遠程路徑。所述接收所述特定數(shù)據(jù)庫執(zhí)行所述可執(zhí)行SQL語句而獲得的執(zhí)行結(jié)果,具體為:接收所述特定數(shù)據(jù)庫執(zhí)行所述可執(zhí)行SQL語句而獲得的以所述文檔格式保存的文件。在所述接收所述特定數(shù)據(jù)庫執(zhí)行所述可執(zhí)行SQL語句而獲得的以所述文檔格式保存的文件之后,所述方法還包括:將所述文件發(fā)送到所述保存路徑。下面就結(jié)果標簽的具體應用方式,舉例說明。結(jié)果標簽示例一:保存查詢結(jié)果的前100行以word格式到d:盤?!磖esult savetype =”0”startRow = OendRow = IOOpath =,,d:\”type =,,0,,filename =,account—result,filetype = ‘0,/> ;特別地,若將查詢結(jié)果保存到本地磁盤的時候,如果不指定保存的類型,則默認將結(jié)果集保存到一個XML文件,同時若路徑也沒有指定,或?qū)傩詾榭?,則會彈出路徑選擇對話框,提示用戶輸入一個具體的保存路徑或用戶選擇一個存在的路徑。結(jié)果標簽示例二:通過 webservice (http://xxxx.xx.com/sevices/CS wsdl)的 saveResult 接口保存查詢結(jié)果的第五頁(每頁十行)到遠程。其實現(xiàn)過程如下:〈result savetype =,,I,,pageNum =,5,pageSize =,,10,,webserviceurl = http://xxxx.xx.com/sevices/CS wsdlwebservice Interface =,,saveResult,,/> ;另外,在所述XML—SQL語句還包括UI標簽,用來描述所述XML—SQL解析器與所述特定數(shù)據(jù)庫間的用戶操作。另外,所述UI標簽還具有一個value屬性。在具體的實施過程中,此類標簽用來描述與用戶進行Π交互的信息,在實際使用的時候,會為這些UI標簽動態(tài)生成操作界面,例如:輸入一個日期,時間、數(shù)字,字符串的對話框等等,總之,UI標簽主要是為了與用戶進行動態(tài)溝通,獲取信息用的。下面以UI標簽的具體應用方式,舉例說明?!磀ate format = “yyyy-mm-dd” description = “請輸入日期,,>〈date> ;〈date format =“yyyy-MM_dd hh24:mm: ss” description = “請輸入時間” Xdate〉;〈double format = “#.00” description = “請輸入數(shù)字(保留兩位小數(shù)),,>〈/double);〈double format = “#.” description = “請輸入一個整數(shù),,>〈/double> ;〈string size = “ 10” description = “請輸入一個字符串 ” >〈/string> ;
由此可以看出,在每個Π標簽中,由于屬性值的不同,會有不同的顯示效果,例如date標簽的format屬性的值的不同,會生成不同的時間UI控件。最終產(chǎn)生UI控件的響應結(jié)果會替換原有標簽,形成可執(zhí)行的SQL語言;另外,并不是所有的UI標簽都會產(chǎn)生對話框進行與數(shù)據(jù)庫進行交互,所有的UI標簽一旦指定了 value屬性,則不再彈出對話框,而是以value屬性的值作為最終與數(shù)據(jù)庫交互之用。例如,像下面這樣使用〈date/〉標簽:〈date value = ” 1988-12-12” >〈date> ;由于是固定的日期,考慮到跨數(shù)據(jù)庫的要求,最終形成的可執(zhí)行SQL中就會是1988年12月12日。這樣,不論是最終的執(zhí)行數(shù)據(jù)庫是oracle還是sqlserver還是mysql都可以順利執(zhí)行。在所述XML_SQL語句中還可以包括一些其他的標簽步驟110,判斷所述XML_SQL語句是否正確;在具體的實施過程中,主要是驗證所述XML_SQL語句中,XML的標簽是否符合語法規(guī)定,比如對控制標簽進行處理,確認語句中附加的數(shù)據(jù)庫信息是否正確,以便真正執(zhí)行sql語言的時候,獲取數(shù)據(jù)庫的連接。對Π標簽進行處理,保證用戶進行交互,動態(tài)的獲取數(shù)據(jù)。步驟120,在所述XML_SQL語句正確時,至少基于所述控制標簽,生成所述特定數(shù)據(jù)庫的可執(zhí)行SQL語句,以供所述特定數(shù)據(jù)庫執(zhí)行。在具體的實施過程中,根據(jù)用戶輸入的動態(tài)數(shù)據(jù),解析器將XML_SQL中的XML部分值用真實的數(shù)值進行取代,形成真正的可執(zhí)行的數(shù)據(jù)庫SQL語句,在SQL語句生成的時候,可能會受到結(jié)果標簽分析功能的影響,比如,結(jié)果標簽指定了返回前100條數(shù)據(jù),則生成實際的SQL語句會有具體的影響;同時,根據(jù)結(jié)果標簽中用戶的要求,將數(shù)據(jù)返回的執(zhí)行結(jié)果以特定的格式發(fā)送到指定位置。比如,以word格式發(fā)送到d盤,保存為pdf文件等等。在本申請實施例中,可以對既有的UI標簽進行擴展,比如以〈String〉標簽為例,用戶可能覺得彈出的對話框不夠美觀,此時,本領(lǐng)域的技術(shù)人員可以通過重新定制一個窗口來顯示對話框;還比如,一些開發(fā)人員覺得提供的Π窗口無法滿足業(yè)務的需求,例如,彈出一個對話框以獲得用戶的籍貫,而該對話框為一個普通的三級下拉框,第一級選擇省、第二級選擇市、第三級選擇區(qū)縣,那么開發(fā)人員可能會新建一個名為〈BirthPlaceX/BirthPlace〉的Π應用標簽。并為此標簽提供一個Π窗口。在具體應用的時候,將此標簽<BirthPlaceX/BirthPlace> 嵌入 XML_SQL 語言中使用。同樣,對于一些常用的結(jié)果集保存模式,比如:將結(jié)果集保存為一個word文件或者通過WebService保存到遠程。這些保存模式可能仍然無法令用戶滿意,舉例來說,用戶希望結(jié)果集被保存到一個txt文件并被打成一個zip壓縮包。如果是這樣的話,開發(fā)者就可以對此處提到的結(jié)果集保存標簽進行擴展,從而對數(shù)據(jù)庫返回的數(shù)據(jù)進行重新組織,最后生成指定格式的文件。請參考圖2,為本申請實施例中執(zhí)行SQL語句的方法流程圖;步驟200,接收所述XML_SQL解析器生成的與所述特定數(shù)據(jù)庫對應的SQL語句;在具體的實施過程中,實施執(zhí)行SQL語句的方法,應用在一特定數(shù)據(jù)庫中,述特定數(shù)據(jù)庫為至少兩個數(shù)據(jù)庫中的一個數(shù)據(jù)庫,其中,所述至少兩個數(shù)據(jù)庫與一 XML_SQL解析器連接,所述至少兩個數(shù)據(jù)庫為不同類型的數(shù)據(jù)庫;所述SQL語句由所述XML_SQL解析器基于用戶輸入的XML_SQL語句而生成。所述SQL語句包括有控制標簽、結(jié)果標簽、UI標簽等等標簽,其中,所述結(jié)果標簽用來描述所述特定數(shù)據(jù)庫通過執(zhí)行所述可執(zhí)行SQL語句而獲得的執(zhí)行結(jié)果的文檔格式。步驟210,執(zhí)行所述SQL語句,獲得執(zhí)行結(jié)果。在具體的實施過程中,根據(jù)所述SQL語句中控制標簽等標簽中的信息,執(zhí)行相應的內(nèi)容,在步驟210之后還包括,將所述執(zhí)行結(jié)果保存為所述文檔格式的文件;同時,將所述文件發(fā)送給所述XML_SQL解析器。下面就以一個具體的例子,說明所述執(zhí)行SQL語句的過程;<database url = “192.168.18.1” type = “oracle”driver = “oracle, jdbc.driver.0racleDriver,,language = “java,,resultsize = “ 1000” >orcl〈/database> ;select acountid as '貝長號 id' , customer name as '開戶人'from useracount where amount〉,〈double format =“#."description =“請輸入最低賬戶余額”>〈/double)and account_created〈date format = ' yyyy-MM-dd ' description ='請輸入創(chuàng)建用戶的最 低時間'></date>and customer_name like '〈String size='2' description ='請輸入一個姓氏'>% '〈result savetype = ” 0” startRow = OendRow = 100path =,,d:\,,typefilename =,account_result,webservice =,,,y webservicelnterface =,,,,> ;當用戶輸入此XML_SQL語句之后,會發(fā)送給XML_SQL語言解析器,解析器會首先對此XML_SQL語句做語法分析,確認符合語法規(guī)定(主要是驗證XML標簽部分的合法性)之后,解析器進入實質(zhì)工作階段:第一步:對控制標簽進行處理,確認語句中附加的數(shù)據(jù)庫的信息是否正確,以便真正執(zhí)行sql語言的時候,獲取數(shù)據(jù)庫的連接。第二步:對Π標簽進行處理,和用戶進行交互,以便動態(tài)的獲取數(shù)據(jù),例如,上述語句中的獲取“最低賬戶余額”就是工作在此階段。第三步:根據(jù)用戶輸入動態(tài)數(shù)據(jù),將XML_SQL中的XML部分用真實的值進行取代,形成真正的可執(zhí)行的數(shù)據(jù)庫SQL語句,“實現(xiàn)跨數(shù)據(jù)庫特性”就是工作在此階段,根據(jù)用戶指定的數(shù)據(jù)庫不同,生成的SQL語句是不盡相同的。需要說明的是:此時SQL語句的生成是有可能受到結(jié)果標簽的分頁功能的影響的,例如,本例中結(jié)果標簽指定了返回前100條數(shù)據(jù),對于生成實際的SQL語句則根據(jù)此指定的結(jié)果標簽,返回前100條數(shù)據(jù)。第四步:執(zhí)行SQL語句階段,即在真實的數(shù)據(jù)庫上執(zhí)行上述第三步產(chǎn)生SQL語句。t匕如,若所述SQL語句為查詢語句,則執(zhí)行查詢動作,若為刪除語句,則執(zhí)行刪除動作。第五步:結(jié)果標簽的處理,根據(jù)用戶的要求,將數(shù)據(jù)庫返回的執(zhí)行結(jié)果以特定的格式發(fā)送到指定位置。
下面請參考圖3,為本申請實施例中生成SQL語句的系統(tǒng)模塊圖;如圖所示,所述系統(tǒng)包括喲XML_SQL解析器,所述XML_SQL解析器與類型不同的至少兩個數(shù)據(jù)庫相連接,所述系統(tǒng)包括:第一接收模塊,用于接收用戶輸入的XML_SQL語句,其中所述XML_SQL語句至少包括有XML控制標簽,所述控制標簽至少包括有所述至少兩個數(shù)據(jù)庫中的一個特定數(shù)據(jù)庫的數(shù)據(jù)庫地址,數(shù)據(jù)庫類型,數(shù)據(jù)庫驅(qū)動和數(shù)據(jù)庫語言;判斷模塊,用于判斷所述XML_SQL語句是否正確;生成模塊,用于在所述XML_SQL語句正確時,至少基于所述控制標簽,生成所述特定數(shù)據(jù)庫的可執(zhí)行的SQL語句,以供所述特定數(shù)據(jù)庫執(zhí)行。第二接收模塊,用于在所述生成所述特定數(shù)據(jù)庫可執(zhí)行的SQL語句之后,接收所述特定數(shù)據(jù)庫執(zhí)行所述可執(zhí)行SQL語句而獲得的執(zhí)行結(jié)果。下面請參考圖4,為本申請實施例中生成SQL語句的系統(tǒng)模塊圖;如圖所示,所述系統(tǒng)應用在一特定數(shù)據(jù)庫中,所述特定數(shù)據(jù)庫為至少兩個數(shù)據(jù)庫的一個數(shù)據(jù)庫,其中,所述至少兩個數(shù)據(jù)庫與一 XML_SQL解析器連接,所述至少兩個數(shù)據(jù)庫為不同類型的數(shù)據(jù)庫,所述系統(tǒng)包括:接收模塊,用于接收所述XML_SQL解析器生成的與所述特定數(shù)據(jù)庫對應的SQL語句;獲得模塊,用于執(zhí)行所述SQL語句,獲得執(zhí)行結(jié)果。保存模塊,用于在所述執(zhí)行所述SQL語句,獲得執(zhí)行結(jié)果之后,將所述執(zhí)行結(jié)果保存為所述文檔格式的文件;發(fā)送模塊,用于將所述文件發(fā)送給所述XML_SQL解析器。由于本裝置實施例與前述方法實施例都是基于同一發(fā)明構(gòu)思的同一發(fā)明,鑒于前述對方法實施例的實施過程進行了詳細的描述,為了說明書的簡潔,此處不再贅述裝置實施例的具體實施過程。通過本申請的一個或多個實施例,可以實現(xiàn)如下技術(shù)效果:一、通過采用本申請生成的SQL語句的方法,解決了現(xiàn)有技術(shù)中標準SQL語句不能兼容類型不同的數(shù)據(jù)庫的技術(shù)問題,從而實現(xiàn)了跨數(shù)據(jù)庫類型的操作。二、進一步的,由于生成的SQL語句結(jié)合了 XML語言中的優(yōu)勢,使得生成的SQL語句能夠適應于一些有特殊性能要求的場景,擴展了 SQL語句的應用范圍。顯然,本領(lǐng)域的技術(shù)人員可以對本申請進行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請也意圖包含這些改動和變型在內(nèi)。
權(quán)利要求
1.一種生成SQL語句的方法,應用在XML_SQL解析器中,所述XML_SQL解析器與類型不同的至少兩個數(shù)據(jù)庫相連接,其特征在于,所述方法包括: 接收用戶輸入的XML_SQL語句,其中所述XML_SQL語句至少包括有XML控制標簽,所述控制標簽至少包括有所述至少兩個數(shù)據(jù)庫中的一個特定數(shù)據(jù)庫的數(shù)據(jù)庫地址,數(shù)據(jù)庫類型,數(shù)據(jù)庫驅(qū)動和數(shù)據(jù)庫語言; 判斷所述XML_SQL語句是否正確; 在所述XML_SQL語句正確時,至少基于所述控制標簽,生成所述特定數(shù)據(jù)庫的可執(zhí)行SQL語句,以供所述特定數(shù)據(jù)庫執(zhí)行。
2.如權(quán)利要求1所述的方法,其特征在于,在所述生成所述特定數(shù)據(jù)庫可執(zhí)行的SQL語句之后,所述方法還包括: 接收所述特定數(shù)據(jù)庫執(zhí)行所述可執(zhí)行SQL語句而獲得的執(zhí)行結(jié)果。
3.如權(quán)利要求2所述的方法,其特征在于,所述XML_SQL語句還包括:結(jié)果標簽,用來描述所述特定數(shù)據(jù)庫通過執(zhí)行所述可執(zhí)行SQL語句而獲得的執(zhí)行結(jié)果的文檔格式。
4.如權(quán)利要求3所述的方法,其特征在于,所述結(jié)果標簽中還包括有所述執(zhí)行結(jié)果的保存路徑,所述保存路徑為:所述特定數(shù)據(jù)庫本地路徑或遠程路徑。
5.如權(quán)利要求4所述的方法,其特征在于,所述接收所述特定數(shù)據(jù)庫執(zhí)行所述可執(zhí)行SQL語句而獲得的執(zhí)行結(jié)果,具體為: 接收所述特定數(shù)據(jù)庫執(zhí)行所述可執(zhí)行SQL語句而獲得的以所述文檔格式保存的文件。
6.如權(quán)利要求5所述的方法,其特征在于,在所述接收所述特定數(shù)據(jù)庫執(zhí)行所述可執(zhí)行SQL語句而獲得的以所述文檔格式保存的文件之后,所述方法還包括: 將所述文件發(fā)送到所述保存路徑。
7.如權(quán)利要求1 6中任一項所述的方法,其特征在于,所述XML_SQL語句還包括:UI標簽,用來描述所述XML_SQL解析器與所述特定數(shù)據(jù)庫間的用戶操作。
8.如權(quán)利要求7所述的方法,其特征在于,所述UI標簽具有一個value屬性。
9.一種執(zhí)行SQL語句的方法,應用在一特定數(shù)據(jù)庫中,所述特定數(shù)據(jù)庫為至少兩個數(shù)據(jù)庫中的一個數(shù)據(jù)庫,其中,所述至少兩個數(shù)據(jù)庫與一 XML_SQL解析器連接,所述至少兩個數(shù)據(jù)庫為不同類型的數(shù)據(jù)庫,其特征在于,所述方法包括: 接收所述XML_SQL解析器生成的與所述特定數(shù)據(jù)庫對應的SQL語句; 執(zhí)行所述SQL語句,獲得執(zhí)行結(jié)果。
10.如權(quán)利要求9所述的方法,其特征在于,所述SQL語句由所述XML_SQL解析器基于用戶輸入的XML_SQL語句而生成。
11.如權(quán)利要求10所述的方法,其特征在于,所述XML_SQL語句包括:結(jié)果標簽,用來描述所述特定數(shù)據(jù)庫通過執(zhí)行所述可執(zhí)行SQL語句而獲得的執(zhí)行結(jié)果的文檔格式。
12.如權(quán)利要求11所述的方法,其特征在于,在所述執(zhí)行所述SQL語句,獲得執(zhí)行結(jié)果之后,所述方法還包括: 將所述執(zhí)行結(jié)果保存為所述文檔格式的文件; 將所述文件發(fā)送給所述XML_SQL解析器。
13.一種生成SQL語句的系統(tǒng),所述系統(tǒng)包括有XML_SQL解析器,所述XML_SQL解析器與類型不同的至少兩個數(shù)據(jù)庫相連接,其特征在于,所述系統(tǒng)包括:第一接收模塊,用于接收用戶輸入的XML_SQL語句,其中所述XML_SQL語句至少包括有XML控制標簽,所述控制標簽至少包括有所述至少兩個數(shù)據(jù)庫中的一個特定數(shù)據(jù)庫的數(shù)據(jù)庫地址,數(shù)據(jù)庫類型,數(shù)據(jù)庫驅(qū)動和數(shù)據(jù)庫語言; 判斷模塊,用于判斷所述XML_SQL語句是否正確; 生成模塊,用于在所述XML_SQL語句正確時,至少基于所述控制標簽,生成所述特定數(shù)據(jù)庫的可執(zhí)行的SQL語句,以供所述特定數(shù)據(jù)庫執(zhí)行。
14.如權(quán)利要求13所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 第二接收模塊,用于在所述生成所述特定數(shù)據(jù)庫可執(zhí)行的SQL語句之后,接收所述特定數(shù)據(jù)庫執(zhí)行所述可執(zhí)行SQL語句而獲得的執(zhí)行結(jié)果。
15.一種執(zhí)行SQL語句的系統(tǒng),應用在一特定數(shù)據(jù)庫中,所述特定數(shù)據(jù)庫為至少兩個數(shù)據(jù)庫中的一個數(shù)據(jù)庫,其中,所述至少兩個數(shù)據(jù)庫與一 XML_SQL解析器連接,所述至少兩個數(shù)據(jù)庫為不同類型的數(shù)據(jù)庫,其特征在于,所述系統(tǒng)包括: 接收模塊,用于接收所述XML_SQL解析器生成的與所述特定數(shù)據(jù)庫對應的SQL語句; 獲得模塊,用于執(zhí)行所述SQL語句,獲得執(zhí)行結(jié)果。
16.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述XML_SQL語句包括:結(jié)果標簽,用來描述所述特定數(shù)據(jù)庫通過執(zhí)行所述可執(zhí)行SQL語句而獲得的執(zhí)行結(jié)果的文檔格式。
17.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括: 保存模塊,用于在所述執(zhí)行所述SQL語句,獲得執(zhí)行結(jié)果之后,將所述執(zhí)行結(jié)果保存為所述文檔格式的文件; 發(fā)送模塊,用于將所述文件發(fā)送給所述XML_SQL解析器。
全文摘要
本申請公開了一種生成及執(zhí)行SQL語句的方法和系統(tǒng),所述方法應用在XML_SQL解析器中,所述XML_SQL解析器與類型不同的至少兩個數(shù)據(jù)庫相連接,所述方法包括接收用戶輸入的XML_SQL語句,其中所述XML_SQL語句至少包括有XML控制標簽,所述控制標簽至少包括有所述至少兩個數(shù)據(jù)庫中的一個特定數(shù)據(jù)庫的數(shù)據(jù)庫地址,數(shù)據(jù)庫類型,數(shù)據(jù)庫驅(qū)動和數(shù)據(jù)庫語言;判斷所述XML_SQL語句是否正確;在所述XML_SQL語句正確時,至少基于所述控制標簽,生成所述特定數(shù)據(jù)庫的可執(zhí)行SQL語句,以供所述特定數(shù)據(jù)庫執(zhí)行。通過上述技術(shù)方法解決了SQL語句不能同時適用于多個類型不同的數(shù)據(jù)庫的問題。
文檔編號G06F17/30GK103177008SQ20111043489
公開日2013年6月26日 申請日期2011年12月22日 優(yōu)先權(quán)日2011年12月22日
發(fā)明者畢繼安 申請人:北大方正集團有限公司, 北京北大方正電子有限公司