欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      ORACLE9i動(dòng)態(tài)SQL調(diào)用方法心得

      時(shí)間:2019-05-14 23:08:07下載本文作者:會(huì)員上傳
      簡(jiǎn)介:寫(xiě)寫(xiě)幫文庫(kù)小編為你整理了多篇相關(guān)的《ORACLE9i動(dòng)態(tài)SQL調(diào)用方法心得》,但愿對(duì)你工作學(xué)習(xí)有幫助,當(dāng)然你在寫(xiě)寫(xiě)幫文庫(kù)還可以找到更多《ORACLE9i動(dòng)態(tài)SQL調(diào)用方法心得》。

      第一篇:ORACLE9i動(dòng)態(tài)SQL調(diào)用方法心得

      ORACLE9i動(dòng)態(tài)SQL調(diào)用方法心得

      一、執(zhí)行動(dòng)態(tài)函數(shù)--返回值

      OUT_CS:=0;--參數(shù)

      IN_CS1:=100;

      IN_CS2:=150;--自定義函數(shù)名稱(chēng)FUN_01();

      NAME:='01'

      V_SQL := 'BEGIN :1:=FUN_'||NAME||'(:2);END;';

      BEGIN

      EXECUTE IMMEDIATE V_SQL

      USING OUT OUT_CS, IN IN_CS;

      EXCEPTION

      WHEN OTHERS THEN

      OUT_JG := '執(zhí)行異常!';

      END;

      FUNCTION GET_DMGZ(IN_CS IN NUMBER)RETURN NUMBER AS AS BEGIN

      RETURN IN_CS+1;END;

      二、執(zhí)行動(dòng)態(tài)過(guò)程--輸出參數(shù)

      OUT_CS:=0;--輸入?yún)?shù)

      IN_CS:=100;--自定義函數(shù)名稱(chēng)PRO_01();

      NAME:='01'

      V_SQL := 'BEGIN PRO_' || NAME|| '(:1,:2);END;';

      BEGIN

      EXECUTE IMMEDIATE V_SQL

      USING IN IN_CS, OUT RVAR;

      EXCEPTION

      WHEN OTHERS THEN

      OUT_JG := 0;

      END;

      PROCEDURE PRO_01(IN_CS

      IN NUMBER, OUT_CS OUT NUMBER)AS BEGIN

      OUT_CS:=IN_CS+1;END;

      三、返回游標(biāo)參數(shù)

      1、在包里新建一類(lèi)型 TYPE MY_CUR IS REF CURSOR;

      2、在參數(shù)定義時(shí)使用自定義類(lèi)型

      OUT_CS OUT MY_CUR;--存儲(chǔ)過(guò)程

      RETURN MY_CUR;

      --自定義函數(shù)

      3、存儲(chǔ)過(guò)程

      PROCEDURE PRO_01(IN_CS

      IN NUMBER, OUT_CS OUT MY_CUR)AS BEGIN

      OPEN OUT_CS FOR SELECT IN_CS+1 FROM DUAL;END;

      4、自定義函數(shù)

      FUNCTION GET_DMGZ(IN_CS IN NUMBER)RETURN MY_CUR AS RC MY_CUR;AS BEGIN

      OPEN RC FOR SELECT IN_CS+1 FROM DUAL;

      RETURN RC;END;

      3、如何使用返回游標(biāo)參數(shù)

      FETCH MY_CUR INTO OUT_CS;

      四、注意事項(xiàng)

      動(dòng)態(tài)調(diào)用存儲(chǔ)過(guò)程,返回游標(biāo)類(lèi)型時(shí)系統(tǒng)會(huì)出現(xiàn)錯(cuò)誤,系統(tǒng)執(zhí)行完函數(shù)或存儲(chǔ)過(guò)程時(shí)會(huì)停止,不返回上級(jí)程序。

      第二篇:調(diào)用外部方法及工作流

      調(diào)用外部方法及工作流

      公開(kāi)一個(gè)對(duì)象,來(lái)從執(zhí)行的工作流中傳給宿主應(yīng)用程序,或者從宿主應(yīng)用程序傳給工作流不就行了嗎?其實(shí),使用現(xiàn)有的串行化技術(shù),如.NET Remoting或者XML Web服務(wù),就可完成這些事。串行化,也叫序列化,它可把數(shù)據(jù)從原有的形式轉(zhuǎn)換成合適的形式,以在不同進(jìn)程甚至不同計(jì)算機(jī)之間進(jìn)行傳輸。

      學(xué)習(xí)完本章,你將掌握:

      1.創(chuàng)建并調(diào)用你的工作流外部的本地?cái)?shù)據(jù)服務(wù)

      2.理解怎樣使用接口來(lái)為宿主進(jìn)程和你的工作流之間進(jìn)行通信。

      3.使用設(shè)計(jì)的外部方法在你的工作流和宿主應(yīng)用程序之間傳輸數(shù)據(jù)。

      4.在一個(gè)正執(zhí)行的工作流中調(diào)用其它工作流

      在寫(xiě)前面的章節(jié)時(shí),我自己不斷地思考,“我不能再等了,我要弄清楚在哪里可把(工作流中的)真實(shí)數(shù)據(jù)返回到宿主應(yīng)用程序中!”為什么?做了這么多的活動(dòng)和工作流的演示,但都沒(méi)有實(shí)際返回某些感興趣的東西給宿主應(yīng)用程序。我不知寫(xiě)過(guò)多少我們感興趣的工作流的實(shí)例和演示,但至多只是僅僅處理過(guò)數(shù)據(jù)的初始化(就像第一章-WF簡(jiǎn)介中你看過(guò)的郵政編碼的例子)。但事情變得更加有趣,坦率地說(shuō),當(dāng)我們啟動(dòng)工作流,然后從外部源中尋找并處理數(shù)據(jù)、返回處理后的數(shù)據(jù)給我們的主應(yīng)用程序要更加接近現(xiàn)實(shí)。

      為什么不這樣呢?公開(kāi)一個(gè)對(duì)象,來(lái)從執(zhí)行的工作流中傳給宿主應(yīng)用程序,或者從宿主應(yīng)用程序傳給工作流不就行了嗎?其實(shí),使用現(xiàn)有的串行化技術(shù),如.NET Remoting或者XML Web服務(wù),就可完成這些事。串行化,也叫序列化,它可把數(shù)據(jù)從原有的形式轉(zhuǎn)換成合適的形式,以在不同進(jìn)程甚至不同計(jì)算機(jī)之間進(jìn)行傳輸。

      為什么談到序列化呢?因?yàn)槟愕墓ぷ髁魇窃谀愕乃拗鬟M(jìn)程中的不同線程上執(zhí)行,不同線程之間傳送數(shù)據(jù),如不進(jìn)行適當(dāng)?shù)男蛄谢?,將?huì)引發(fā)災(zāi)難,具體原因超出了本書(shū)的討論范圍。其實(shí),你的工作流能在一個(gè)持久化的狀態(tài)下發(fā)送它的數(shù)據(jù)。這并沒(méi)有在不同線程上,甚至它不在執(zhí)行中。

      但我們想在我們的工作流和正控制該工作流的宿主進(jìn)程間傳送數(shù)據(jù)時(shí),使用.NET Remoting或者XML Web服務(wù)這樣的技術(shù)為什么并沒(méi)有認(rèn)為是多余的呢?其實(shí)這絕對(duì)有必要!我們將創(chuàng)建local通信,本章將以此出發(fā)。我們將搭建必須的體系來(lái)滿足線程數(shù)據(jù)序列化,以進(jìn)行計(jì)算機(jī)之間或進(jìn)程之間的數(shù)據(jù)傳輸。

      創(chuàng)建ExternalDataService服務(wù)

      當(dāng)工作流和它的宿主進(jìn)行通信時(shí),在它發(fā)送和接收數(shù)據(jù)的時(shí)候,工作流要使用隊(duì)列和消息。WF為我們做的越多,我們就可把重點(diǎn)更多的放到應(yīng)用中特定任務(wù)的解決上。

      工作流內(nèi)部進(jìn)程通信

      對(duì)于簡(jiǎn)單的通信任務(wù),WF使用“abstraction layer”來(lái)在工作流和宿主之間進(jìn)行緩沖。抽象層像一個(gè)黑盒,你為它提供輸入,它會(huì)執(zhí)行一些神奇的任務(wù),然后信息流出到另一邊。但我們不用知道它是如何工作的。

      在這種情形下,該黑盒就是一個(gè)知名的“l(fā)ocal communication”服務(wù)。和WF術(shù)語(yǔ)中的任何一種服務(wù)一樣,它也是另一種可插拔服務(wù)。區(qū)別是它不像WF中的那些已預(yù)先創(chuàng)建好的服務(wù),你需要寫(xiě)出這個(gè)服務(wù)的一部分。為什么呢?因?yàn)槟阍谒拗鲬?yīng)用程序和你的工作流之間傳遞的數(shù)據(jù)有一定的特殊性。更進(jìn)一步說(shuō),你可創(chuàng)建各種各樣的數(shù)據(jù)傳輸方法,你可使用你設(shè)計(jì)的各種方法從宿主應(yīng)用程序發(fā)送數(shù)據(jù),然后在工作流中接收數(shù)據(jù)。

      備注:這里有些事情你需要進(jìn)行關(guān)注,那就是對(duì)象或集合的共享問(wèn)題。因?yàn)樗拗鲬?yīng)用程序和工作流運(yùn)行時(shí)在同一個(gè)應(yīng)用程序域執(zhí)行,因此引用類(lèi)型的對(duì)象和集合就是通過(guò)引用而不是值進(jìn)行傳遞。這意味著宿主應(yīng)用程序和工作流實(shí)例在同一時(shí)間會(huì)訪問(wèn)和使用同一個(gè)對(duì)象,多線程環(huán)境下這會(huì)產(chǎn)生bug,出現(xiàn)數(shù)據(jù)并發(fā)訪問(wèn)錯(cuò)誤。因此,對(duì)于可能要進(jìn)行并發(fā)訪問(wèn)的對(duì)象或集合,你可考慮傳遞一個(gè)對(duì)象或集合的副本,或許這可通過(guò)實(shí)現(xiàn)ICloneable接口,或者考慮親自序列化該對(duì)象或集合并傳遞序列化后的版本。

      你可寫(xiě)這種local service,把它插進(jìn)工作流,然后打開(kāi)連接,發(fā)送數(shù)據(jù)。這些數(shù)據(jù)可以是字符串,DataSet對(duì)象,甚至可以是你設(shè)計(jì)的任何可被序列化的自定義對(duì)象。通信可以是雙向的,盡管在本章我沒(méi)有演示它。(這里,我僅僅是把數(shù)據(jù)從工作流中傳回給宿主應(yīng)用程序。)從工作流的角度來(lái)說(shuō),我們使用工具生成活動(dòng)的目的是發(fā)送和接收數(shù)據(jù)。從宿主應(yīng)用程序的角度來(lái)說(shuō),接收數(shù)據(jù)等同于一個(gè)事件,而發(fā)送數(shù)據(jù)就是在一個(gè)服務(wù)對(duì)象上的方法的簡(jiǎn)單調(diào)用。

      備注:我們?cè)诤竺鎺渍驴吹礁嗟幕顒?dòng)后還會(huì)重溫該雙向數(shù)據(jù)傳輸?shù)母拍睢9ぷ髁骰顒?dòng)從宿主應(yīng)用程序中接收數(shù)據(jù)基于一個(gè)HandleExternalEvent活動(dòng),我們將在第10章“Event活動(dòng)”中看到。我們也需要更深入地了解這些概念間的相互關(guān)系,這在第17章“宿主通信”中將進(jìn)行介紹。對(duì)于當(dāng)前,我們只是在工作流實(shí)例完成它的任務(wù)后,簡(jiǎn)單地返回復(fù)合數(shù)據(jù)給宿主。

      我們需要做的還不僅僅是這一點(diǎn),我們最終需要添加ExternalDataService服務(wù)到我們的工作流運(yùn)行時(shí)中。ExternalDataService是一個(gè)可插拔的服務(wù),它方便了工作流實(shí)例和宿主應(yīng)用程序之間進(jìn)行序列化數(shù)據(jù)的傳輸。在緊接下來(lái)的一節(jié)我們將寫(xiě)出的該服務(wù)的代碼將做很多事(包括序列化數(shù)據(jù)的傳輸)。讓我們來(lái)看看大體的開(kāi)發(fā)過(guò)程。

      第三篇:SQL數(shù)據(jù)庫(kù)心得

      黃淮學(xué)院 2015---2016學(xué)年第 一 學(xué)期 《C#數(shù)據(jù)庫(kù)應(yīng)用程序開(kāi)發(fā)技術(shù)與案例教程》課程

      題目:

      學(xué)習(xí)報(bào)告

      系:數(shù)學(xué)科學(xué)系 專(zhuān)

      業(yè):數(shù)學(xué)與應(yīng)用數(shù)學(xué) 年

      級(jí):1301B 姓

      名:曹占營(yíng) 學(xué)

      號(hào):1331110101 任課教師:楊鋒英

      2015年 12 月 30日

      C#數(shù)據(jù)庫(kù)學(xué)習(xí)報(bào)告

      在日常生活中,我們和朋友、親戚聯(lián)系,會(huì)廣泛用到通訊錄,因此這門(mén)課程以通訊錄開(kāi)發(fā)為案例,教我們學(xué)習(xí)軟件開(kāi)發(fā)。

      軟件開(kāi)發(fā)是一項(xiàng)非常注重實(shí)踐工作,不可能只憑看書(shū)、看視頻就學(xué)會(huì)軟件開(kāi)發(fā),必須扎扎實(shí)實(shí)、一行一行的編寫(xiě)代碼,不斷積累項(xiàng)目經(jīng)驗(yàn),才能真正掌握編程技術(shù),所以我們要親自上級(jí)編寫(xiě)程序,才能真正掌握軟件開(kāi)發(fā)技術(shù)。

      本書(shū)分為基礎(chǔ)篇、進(jìn)階篇、高級(jí)篇,由淺入深地介紹了基于C#的數(shù)據(jù)庫(kù)編程技術(shù),所用的開(kāi)發(fā)工具為Visual Studio 2008、SQL Server 2005以及Access 2007。

      學(xué)習(xí)數(shù)據(jù)庫(kù)的內(nèi)容是從數(shù)據(jù)庫(kù)、數(shù)據(jù)表的創(chuàng)建和修改開(kāi)始的,表是建立關(guān)系數(shù)據(jù)庫(kù)的基本結(jié)構(gòu),用來(lái)存儲(chǔ)數(shù)據(jù)具有已定義的屬性,在表的操作過(guò)程中,有查看表信息、查看表屬性、修改表中的數(shù)據(jù)、刪除表中的數(shù)據(jù)及修改表和刪除表的操作。從課程中讓我更明白一些知識(shí),查詢(xún)可以通過(guò)SQL語(yǔ)言進(jìn)行完成,這樣加深了查詢(xún)語(yǔ)句的基本結(jié)構(gòu),讓我們能更好的掌握其中語(yǔ)句,方便于我們后面的學(xué)習(xí)和應(yīng)用。表是數(shù)據(jù)最重要的一個(gè)數(shù)據(jù)對(duì)象,表的創(chuàng)建好壞直接關(guān)系到數(shù)數(shù)據(jù)庫(kù)的成敗,表的內(nèi)容是越具體越好,但是也不能太繁瑣,以后在實(shí)際應(yīng)用中多使用表,對(duì)表的規(guī)劃和理解就會(huì)越深刻。在編程方面是需要我們對(duì)于編程有邏輯思維能力及一定的編程技巧。在數(shù)據(jù)庫(kù)中插入表、表中的信息等都需要注意,不然很容易出錯(cuò)。

      在基礎(chǔ)篇中,詳細(xì)講解了通訊錄系統(tǒng)的設(shè)計(jì)、開(kāi)發(fā)和安裝部署這樣一個(gè)完整過(guò)程,對(duì)各個(gè)任務(wù)進(jìn)行詳細(xì)講解。基礎(chǔ)篇學(xué)習(xí)分為9個(gè)任務(wù),分別為系統(tǒng)分析與設(shè)計(jì)、用戶登錄、主窗體設(shè)計(jì)、聯(lián)系人分組管理、聯(lián)系人管理、用戶密碼修改、數(shù)據(jù)庫(kù)備份與恢復(fù)、設(shè)計(jì)“關(guān)于”窗體、系統(tǒng)安裝與部署。學(xué)完基礎(chǔ)篇,即可開(kāi)發(fā)出一個(gè)功能較為完備的通訊錄系統(tǒng)。在聯(lián)系人管理任務(wù)學(xué)習(xí)中,由于在Contact表中保存的是分組編號(hào),而窗體上要顯示的是分組名稱(chēng),所以在查詢(xún)語(yǔ)句中需要級(jí)聯(lián)查詢(xún),即SQL語(yǔ)句為”select Contact.Id, Name, Phone, Email, QQ, GroupName from Contact, ContactGroup where Contact.GroupId = ContactGroup.Id”。為了實(shí)現(xiàn)代碼復(fù)用,可以提供查詢(xún)功能,根據(jù)用戶選擇的擦尋天劍,拼接產(chǎn)生SQL語(yǔ)句。同時(shí)為了支持模糊查詢(xún),還在SQL語(yǔ)句中用了like語(yǔ)句。通過(guò)SqlDataAdapter的Fill方法填充數(shù)據(jù)集,獲取數(shù)據(jù)。數(shù)據(jù)集中有了數(shù)據(jù)以后,我們只需設(shè)置DataGridView控件的DataSource屬性,就可以顯示數(shù)據(jù)了。

      在進(jìn)階篇中,介紹了企業(yè)項(xiàng)目開(kāi)發(fā)中廣發(fā)用到的參數(shù)化SQL語(yǔ)句、存儲(chǔ)過(guò)程使用及定義數(shù)據(jù)庫(kù)操作類(lèi),分為3個(gè)任務(wù)學(xué)習(xí),分別為使用參數(shù)化SQL語(yǔ)句、使用存儲(chǔ)過(guò)程、使用自定義數(shù)據(jù)庫(kù)操作類(lèi),進(jìn)一步提高我們的數(shù)據(jù)庫(kù)編程能力。在使用存儲(chǔ)過(guò)程任務(wù)學(xué)習(xí)中,了解到存儲(chǔ)過(guò)程是在大型數(shù)據(jù)庫(kù)系統(tǒng)中,一組為了完成特定功能的SQL語(yǔ)句集,經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫(kù)中,用戶通過(guò)指定存儲(chǔ)過(guò)程的名字并給出參數(shù)(如果該存儲(chǔ)過(guò)程帶有參數(shù))來(lái)執(zhí)行它。在性能方面,存儲(chǔ)過(guò)程有如下的優(yōu)點(diǎn)。(1)與編譯,存儲(chǔ)過(guò)程預(yù)先編譯好放在數(shù)據(jù)庫(kù)內(nèi),減少編譯語(yǔ)句所花的時(shí)間。(2)緩存,編譯好的存儲(chǔ)過(guò)程會(huì)進(jìn)入緩存,所以對(duì)于經(jīng)常執(zhí)行的存儲(chǔ)過(guò)程,除了第一次執(zhí)行外,其他次執(zhí)行的書(shū)都會(huì)有明顯提高。(3)減少網(wǎng)絡(luò)傳輸,特別對(duì)于處理一些數(shù)據(jù)的存儲(chǔ)過(guò)程,不必像直接用SQL語(yǔ)句實(shí)現(xiàn)那樣多次傳送數(shù)據(jù)到客戶端。通過(guò)前面的學(xué)習(xí),細(xì)細(xì)體會(huì)對(duì)數(shù)據(jù)庫(kù)的操作,可以發(fā)現(xiàn),這么多操作其實(shí)可以分為4種。(1)對(duì)數(shù)據(jù)庫(kù)進(jìn)行非連接式查詢(xún)操作,返回多條記錄。這種操作可以通過(guò)SqlDataAdapter對(duì)象的Fill方法來(lái)完成,即把查詢(xún)得到的結(jié)果填充到DataTable(或DataSet)對(duì)象中。(2)對(duì)數(shù)據(jù)庫(kù)進(jìn)行連接式查詢(xún)操作,返回多條查詢(xún)記錄。這種操作可以通過(guò)SqlCommand對(duì)象的ExecuteReader方法來(lái)完成,返回SqlDataReader對(duì)象。(3)從數(shù)據(jù)庫(kù)中檢索單值。這種操作可以通過(guò)SqlCommand對(duì)象的ExecuteNonQuery方法來(lái)完成。ExecuteScalar方法返回的是Object類(lèi)型,需要根據(jù)實(shí)際情況進(jìn)行類(lèi)型轉(zhuǎn)換。(4)對(duì)數(shù)據(jù)庫(kù)執(zhí)行增、刪、改操作。這種操作可以通過(guò)SqlCommand對(duì)象的ExecuteNonQuery方法來(lái)完成,返回增、刪、改操作后數(shù)據(jù)庫(kù)中受影響的行數(shù)。

      在高級(jí)篇中,分為4個(gè)任務(wù)學(xué)習(xí),分別為開(kāi)發(fā)基于三層構(gòu)架的通訊錄程序、開(kāi)發(fā)基于Access的通訊錄程序、實(shí)現(xiàn)基于抽象工廠模式的三層架構(gòu)、使用MD5加密用戶密碼。首先詳細(xì)講解了基于三層構(gòu)架的通訊錄程序開(kāi)發(fā)過(guò)程以及如何開(kāi)發(fā)一個(gè)基于Access的通訊錄系統(tǒng)。最后,介紹了如何采用MD5加密技術(shù)對(duì)用戶密碼加密。MD5加密技術(shù)也是實(shí)際項(xiàng)目開(kāi)發(fā)中廣泛用到的,通過(guò)MD5加密用戶密碼,可以提高程序的安全性?!叭龑蛹軜?gòu)”一詞中的“三層”是指:“表示層”、“業(yè)務(wù)邏輯層”、“數(shù)據(jù)訪問(wèn)層”。表示層:位于最外層,離用戶最近。用于顯示和接收用戶輸入的數(shù)據(jù),為用戶提供一種交互式操作界面。表示層的常見(jiàn)形式為WinFrom和WebForm。業(yè)務(wù)邏輯層:負(fù)責(zé)處理用戶輸入的信息,或者是將這些信息發(fā)送給數(shù)據(jù)訪問(wèn)層進(jìn)行保存,或者是調(diào)用數(shù)據(jù)訪問(wèn)層中的函數(shù)再次讀出這些數(shù)據(jù)。業(yè)務(wù)邏輯層也可以包括一些對(duì)“商業(yè)邏輯”描述代碼在里面。數(shù)據(jù)訪問(wèn)層:僅實(shí)現(xiàn)對(duì)數(shù)據(jù)的保存和讀取操作??梢栽L問(wèn)數(shù)據(jù)庫(kù)系統(tǒng)、二進(jìn)制文件、文本文檔或是XML文檔。

      在這一學(xué)期有限的幾次實(shí)驗(yàn)課后,我雖然沒(méi)有學(xué)會(huì)很多,但也學(xué)會(huì)了一些簡(jiǎn)單的操作,我學(xué)會(huì)了一些簡(jiǎn)單的數(shù)據(jù)運(yùn)算,會(huì)建立一些簡(jiǎn)單的表。有時(shí)候在做實(shí)驗(yàn)時(shí),對(duì)于實(shí)驗(yàn)中的一些東西我不怎么了解,但我還會(huì)去做,因?yàn)槲蚁胫挥卸嗑毩?xí)才能熟練,也才能理解掌握知識(shí)。我不知道這一門(mén)課對(duì)其他同學(xué)來(lái)說(shuō)怎么樣,但對(duì)我來(lái)說(shuō)卻有些難,但我會(huì)努力。因?yàn)槲艺J(rèn)為它對(duì)我以后考計(jì)算機(jī)二級(jí)有很大的幫助。

      很快這一學(xué)期馬上就要結(jié)束了,數(shù)據(jù)庫(kù)這一門(mén)課也很快就要結(jié)束了,但這一學(xué)期的學(xué)習(xí)讓我知道了很多,也告訴了我在以后的人生中如何去做事,如何去做人。尤其是老師的耐心,老師的敬業(yè)精神感動(dòng)了我,再做任何事時(shí)都應(yīng)該認(rèn)真負(fù)責(zé),任何一個(gè)人都應(yīng)該被尊重。

      第四篇:SQL語(yǔ)句的優(yōu)化方法

      SQL語(yǔ)句的優(yōu)化方法

      1.1注釋使用

      在語(yǔ)句中多寫(xiě)注釋?zhuān)⑨尣挥绊慡QL語(yǔ)句的執(zhí)行效率。增加代碼的可讀性。

      1.2對(duì)于事務(wù)的使用

      盡量使事務(wù)處理達(dá)到最短,如果事務(wù)太長(zhǎng)最好按功能將事務(wù)分開(kāi)執(zhí)行(如:可以讓用戶在界面上多幾步操作)。事務(wù)太長(zhǎng)很容易造成數(shù)據(jù)庫(kù)阻塞,用戶操作速度變慢或死機(jī)情況。

      1.3對(duì)于與數(shù)據(jù)庫(kù)的交互

      盡量減少與數(shù)據(jù)庫(kù)的交互次數(shù)。如果在前端程序?qū)懹醒蛟L問(wèn)數(shù)據(jù)庫(kù)操作,最好寫(xiě)成將數(shù)據(jù)一次讀到前端再進(jìn)行處理或者寫(xiě)成存儲(chǔ)過(guò)程在數(shù)據(jù)庫(kù)端直接處理。

      1.4對(duì)于SELECT *這樣的語(yǔ)句,不要使用SELECT *這樣的語(yǔ)句,而應(yīng)該使用SELECT table1.column1這樣的語(yǔ)句,明確指出要查詢(xún)的列減少數(shù)據(jù)的通訊量并且這樣的代碼可讀性好,便于維護(hù)。

      1.5盡量避免使用游標(biāo)

      它占用大量的資源。如果需要row-by-row地執(zhí)行,盡量采用非光標(biāo)技術(shù),如:在客戶端循環(huán),用臨時(shí)表,Table變量,用子查詢(xún),用Case語(yǔ)句等等。如果使用了游標(biāo),就要盡量避免在游標(biāo)循環(huán)中再進(jìn)行表連接的操作。

      1.6盡量使用count(1)

      count函數(shù)只有在統(tǒng)計(jì)表中所有行數(shù)時(shí)使用,而且count(1)比count(*)更有效率。

      1.7IN和EXISTS

      EXISTS要遠(yuǎn)比IN的效率高。里面關(guān)系到full table scan和range scan。幾乎將所有的IN操作符子查詢(xún)改寫(xiě)為使用EXISTS的子查詢(xún)。

      1.8注意表之間連接的數(shù)據(jù)類(lèi)型

      避免不同類(lèi)型數(shù)據(jù)之間的連接。

      1.9盡量少用視圖

      對(duì)視圖操作比直接對(duì)表操作慢,可以用stored procedure來(lái)代替她。特別的是不要用視圖嵌套,嵌套視圖增加了尋找原始資料的難度。我們看視圖的本質(zhì):它是存放在服務(wù)器上的被優(yōu)化好了的已經(jīng)產(chǎn)生了查詢(xún)規(guī)劃的SQL。對(duì)單個(gè)表檢索數(shù)據(jù)時(shí),不要使用指向多個(gè)表的視圖,直接從表檢索或者僅僅包含這個(gè)表的視圖上讀,否則增加了不必要的開(kāi)銷(xiāo),查詢(xún)受到干擾。

      1.10沒(méi)有必要時(shí)不要用DISTINCT和ORDER BY

      這些動(dòng)作可以改在客戶端執(zhí)行,它們?cè)黾恿祟~外的開(kāi)銷(xiāo)。

      1.11避免相關(guān)子查詢(xún)

      一個(gè)列的標(biāo)簽同時(shí)在主查詢(xún)和where子句中的查詢(xún)中出現(xiàn),那么很可能當(dāng)主查詢(xún)中的列值改變之后,子查詢(xún)必須重新查詢(xún)一次。查詢(xún)嵌套層次越多,效率越低,因此應(yīng)當(dāng)盡量避免子查詢(xún)。如果子查詢(xún)不可避免,那么要在子查詢(xún)中過(guò)濾掉盡可能多的行。

      1.1注意UNion和`UNion all 的區(qū)別

      UNION all執(zhí)行效率高。

      1.1外鍵關(guān)聯(lián)的列應(yīng)該建立索引

      (如子表id)主子表單據(jù)肯定要建視圖,2個(gè)表的關(guān)聯(lián)以2個(gè)表中的MainID為關(guān)系,所以,需要給子表的MainID單獨(dú)建索引,這將很大地提高視圖的速度。例如Gy_InOutSub中的InoutMainid增加索引。

      第五篇:java 調(diào)用webservice的各種方法總結(jié)

      一、利用jdk web服務(wù)api實(shí)現(xiàn),這里使用基于 SOAP message 的 Web 服務(wù)

      1.首先建立一個(gè)Web services EndPoint:

      Java代碼

      package Hello;

      import javax.jws.WebService;

      import javax.jws.WebMethod;

      import javax.xml.ws.Endpoint;

      @WebService

      public class Hello {

      @WebMethod

      public String hello(String name){

      return “Hello, ” + name + “n”;}

      public static void main(String[] args){

      // create and publish an endpoint

      Hello hello = new Hello();

      Endpoint endpoint Endpoint.publish(“http://localhost:8080/hello”, hello);

      } }

      =

      2.使用 apt 編譯 Hello.java(例:apt-d [存放編譯后的文件目錄](méi) Hello.java),會(huì)生成 jaws目錄

      3.使用java Hello.Hello運(yùn)行,然后將瀏覽器指向http://localhost:8080/hello?wsdl就會(huì)出現(xiàn)下列顯示

      4.使用wsimport 生成客戶端

      使用如下:wsimport-p.-keep http://localhost:8080/hello?wsdl

      5.客戶端程序:

      Java代碼

      1.class HelloClient{ 2.3.public static void main(String args[]){ 4.5.HelloService service = new HelloService();6.7.Hello helloProxy = service.getHelloPort();8.9.String hello = helloProxy.hello(“你好”);10.11.System.out.println(hello);12.13.} 14.15.} 16.二、使用xfire,我這里使用的是myeclipse集成的xfire進(jìn)行測(cè)試的

      利用xfire開(kāi)發(fā)WebService,可以有三種方法:

      1一種是從javabean 中生成;

      一種是從wsdl文件中生成;

      還有一種是自己建立webservice

      步驟如下:

      用myeclipse建立webservice工程,目錄結(jié)構(gòu)如下:

      首先建立webservice接口,代碼如下:

      Java代碼

      1.package com.myeclipse.wsExample;2.3.//Generated by MyEclipse 4.5.6.7.public interface IHelloWorldService { 8.9.10.11.public String example(String message);12.13.14.15.} 16.Java代碼

      1.package com.myeclipse.wsExample;2.3.//Generated by MyEclipse 4.5.6.7.public class HelloWorldServiceImpl implements IHelloWorldService { 8.9.10.11.public String example(String message){ 12.13.return message;14.15.} 16.17.18.19.} 20.修改service.xml 文件,加入以下代碼:

      Xml代碼

      1.2.3. 4.5.HelloWorldService 6.7. 8.9.com.myeclipse.wsExample.IHelloWorldService 10.11. 12.13. 14.15.com.myeclipse.wsExample.HelloWorldServiceImpl 16.17. 18.19. 20.21.literal 22.23.application 24.25. 26.把整個(gè)項(xiàng)目部署到tomcat服務(wù)器中,打開(kāi)瀏覽器,輸入http://localhost:8989/HelloWorld/services/HelloWorldService?wsdl

      客戶端實(shí)現(xiàn)如下:

      Java代碼

      1.package com.myeclipse.wsExample.client;2.3.import java.net.MalformedURLException;4.5.import java.net.URL;6.7.8.9.import org.codehaus.xfire.XFireFactory;10.11.import org.codehaus.xfire.client.Client;12.13.import org.codehaus.xfire.client.XFireProxyFactory;14.15.import org.codehaus.xfire.service.Service;16.17.import org.codehaus.xfire.service.binding.ObjectServiceFactory;18.19.20.21.import com.myeclipse.wsExample.IHelloWorldService;22.23.24.25.public class HelloWorldClient { 26.27.public static void main(String[] args)throws MalformedURLException, Exception { 28.29.// TODO Auto-generated method stub 30.31.Service s=new ObjectServiceFactory().create(IHelloWorldService.class);32.33.XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire());34.35.String url=“http://localhost:8989/HelloWorld/services/HelloWorldService”;36.37.38.39.try 40.41.{ 42.43.44.45.IHelloWorldService hs=(IHelloWorldService)xf.create(s,url);46.47.String st=hs.example(“zhangjin”);48.49.System.out.print(st);50.51.} 52.53.catch(Exception e)54.55.{ 56.57.e.printStackTrace();58.59.} 60.61.} 62.63.64.65.} 66.這里再說(shuō)點(diǎn)題外話,有時(shí)候我們知道一個(gè)wsdl地址,比如想用java客戶端引用.net 做得webservice,使用myeclipse引用,但是卻出現(xiàn)無(wú)法通過(guò)驗(yàn)證的錯(cuò)誤,這時(shí)我們可以直接在類(lèi)中引用,步驟如下:

      Java代碼

      1.public static void main(String[] args)throws MalformedURLException, Exception { 2.3.// TODO Auto-generated method stub 4.5.Service s=new ObjectServiceFactory().create(IHelloWorldService.class);6.7.XFireProxyFactory xf=new XFireProxyFactory(XFireFactory.newInstance().getXFire());8.9.10.11.//遠(yuǎn)程調(diào)用.net開(kāi)發(fā)的webservice 12.13.Client c=new Client(new URL(“http://004km.cn/axis2/

      同理,也需要將axis2復(fù)制到webapp目錄中

      在axis2中部署webservice有兩種方法,第一種是pojo方式,這種方式比較簡(jiǎn)單,但是有一些限制,例如部署的類(lèi)不能加上包名

      第二種方式是利用xml發(fā)布webservice,這種方法比較靈活,不需要限制類(lèi)的聲明

      下面分別說(shuō)明使用方法:

      1.pojo方式:在Axis2中不需要進(jìn)行任何的配置,就可以直接將一個(gè)簡(jiǎn)單的POJO發(fā)布成WebService。其中POJO中所有的public方法將被發(fā)布成WebService方法。先實(shí)現(xiàn)一個(gè)pojo類(lèi):

      Java代碼

      1.public class HelloWorld{ 2.3.public String getName(String name)4.5.{ 6.7.return ”你好 “ + name;8.9.} 10.11.public int add(int a,int b)12.13.{ 14.15.return a+b;16.17.} 18.19.} 20.由于這兩個(gè)方法都是public類(lèi)型,所以都會(huì)發(fā)布成webservice。編譯HelloWorld類(lèi)后,將HelloWorld.class文件放到%tomcat%webappsaxis2WEB-INFpojo目錄中(如果沒(méi)有pojo目錄,則建立該目錄),然后打開(kāi)瀏覽器進(jìn)行測(cè)試:

      輸入一下url:

      http://localhost:8080/axis2/services/listServices

      會(huì)列出所有webservice

      這是其中的兩個(gè)webservice列表,接著,在客戶端進(jìn)行測(cè)試:

      首先可以寫(xiě)一個(gè)封裝類(lèi),減少編碼,代碼如下:

      Java代碼

      1.package MZ.GetWebService;2.3.import javax.xml.namespace.QName;4.5.6.7.import org.apache.axis2.AxisFault;8.9.import org.apache.axis2.addressing.EndpointReference;10.11.import org.apache.axis2.client.Options;12.13.import org.apache.axis2.rpc.client.RPCServiceClient;14.15.16.17.18.19.public class GetWSByAxis2 { 20.21.private static String EndPointUrl;22.23.private static String QUrl=”http://ws.apache.org/axis2“;

      24.25.private QName opAddEntry;26.27.public String WSUrl;28.29.public RPCServiceClient setOption()throws AxisFault 30.31.{ 32.33.RPCServiceClient serviceClient = new RPCServiceClient();34.35.Options options = serviceClient.getOptions();36.37.EndpointReference targetEPR = new EndpointReference(WSUrl);38.39.options.setTo(targetEPR);40.41.return serviceClient;42.43.} 44.45.46.47.public QName getQname(String Option){ 48.49.50.51.return new QName(QUrl,Option);52.53.} 54.55.//返回String 56.57.public String getStr(String Option)throws AxisFault 58.59.{ 60.61.RPCServiceClient serviceClient =this.setOption();62.63.64.65.opAddEntry =this.getQname(Option);66.67.68.69.String str =(String)serviceClient.invokeBlocking(opAddEntry, 70.71.new Object[]{}, new Class[]{String.class })[0];72.73.return str;74.75.} 76.77.// 返回一維String數(shù)組 78.79.public String[] getArray(String Option)throws AxisFault

      80.81.{ 82.83.RPCServiceClient serviceClient =this.setOption();84.85.86.87.opAddEntry =this.getQname(Option);88.89.90.91.String[] strArray =(String[])serviceClient.invokeBlocking(opAddEntry, 92.93.new Object[]{}, new Class[]{String[].class })[0];94.95.return strArray;96.97.} 98.99.//從WebService中返回一個(gè)對(duì)象的實(shí)例

      100.101.public Object getObject(String Option,Object o)throws AxisFault 102.103.{ 104.105.RPCServiceClient serviceClient =this.setOption();106.107.QName qname=this.getQname(Option);108.109.Object object = serviceClient.invokeBlocking(qname, new Object[]{},new Class[]{o.getClass()})[0];110.111.return object;112.113.} 114.115.116.117.///////////////////////////////////////// 讀者可以自己封裝數(shù)據(jù)類(lèi)型,如int,byte,float等數(shù)據(jù)類(lèi)型

      118.119.} 120.客戶端調(diào)用方法:

      Java代碼

      1.MZ.GetWebService.GetWSByAxis2 ws=new MZ.GetWebService.GetWSByAxis2();2.3.ws.WSUrl=”http://localhost:8989/axis2/services/HelloWorld“;4.5.HelloWorld hello=(HelloWorld)ws.getObject(”getName“, HelloWorld.class);6.7.8.9.10.11.System.out.println(hello.getName(”zhangjin“));12.2.使用service.xml發(fā)布webservice,這種方式和直接放在pojo目錄中的POJO類(lèi)不同。要想將MyService類(lèi)發(fā)布成Web Service,需要一個(gè)services.xml文件,這個(gè)文件需要放在META-INF目錄中,該文件的內(nèi)容如下:

      Xml代碼

      1. 2.3. 4.5.HelloWorld webservice 6.7. 8.9.10.11.service.HelloWorld 12.13. 14.15. 16.17. 20.21. 24.25. 26.27. 28.其中元素用于發(fā)布Web Service,一個(gè)元素只能發(fā)布一個(gè)WebService類(lèi),name屬性表示W(wǎng)ebService名,如下面的URL可以獲得這個(gè)WebService的WSDL內(nèi)容:

      http://localhost:8080/axis2/services/myService?wsdl

      除此之外,還有直接可以在其中制定webservice操作方法:可以這樣些service.xml文件

      Java代碼

      1. 2.3. 4.5.HelloWorld service 6.7. 8.9.

      10.11.service.HelloWorld 12.13. 14.15. 16.17. 18.19. 20.21. 22.23. 26.27. 28.29. 30.如果要發(fā)布多個(gè)webservice,可以在文件兩段加上...發(fā)布

      下載ORACLE9i動(dòng)態(tài)SQL調(diào)用方法心得word格式文檔
      下載ORACLE9i動(dòng)態(tài)SQL調(diào)用方法心得.doc
      將本文檔下載到自己電腦,方便修改和收藏,請(qǐng)勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報(bào),并提供相關(guān)證據(jù),工作人員會(huì)在5個(gè)工作日內(nèi)聯(lián)系你,一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        指標(biāo)導(dǎo)入方法和調(diào)用(全文5篇)

        首先,指標(biāo)是導(dǎo)入的 。不是打開(kāi)用的1.先打開(kāi)通達(dá)信行情軟件1.找到功能--專(zhuān)家系統(tǒng)--公示管理器--導(dǎo)入公式2.導(dǎo)入完成之后具體使用方法: 功能——選股器——條件選股——揚(yáng)帆漲停......

        VC++調(diào)用matlab引擎方法設(shè)置(個(gè)人總結(jié))

        VC++調(diào)用matlab引擎找不到dll問(wèn)題 最近嘗試在Win7系統(tǒng)下,用VC++6.0調(diào)用MatlabR2010a引擎,正常配置后發(fā)現(xiàn)程序能夠正常編譯,但運(yùn)行時(shí)報(bào)錯(cuò)如下,說(shuō)找不到libmx.dll,網(wǎng)上查發(fā)現(xiàn)有不少......

        動(dòng)態(tài)網(wǎng)頁(yè)制作心得

        煙臺(tái)大學(xué)文經(jīng)學(xué)院 姓名:班級(jí):學(xué)號(hào): 網(wǎng) 頁(yè) 制 作 課 程 心 得 題目:xxxxxx xx xxxxx xxxxxxxxxx 我制作的動(dòng)態(tài)網(wǎng)頁(yè)的主題是宣傳我的家鄉(xiāng),通過(guò)網(wǎng)頁(yè)將家鄉(xiāng)的特色表現(xiàn)出來(lái)。通過(guò)網(wǎng)頁(yè)......

        動(dòng)態(tài)網(wǎng)頁(yè)制作心得

        煙臺(tái)大學(xué)文經(jīng)學(xué)院 姓名: 班級(jí): 學(xué)號(hào): 網(wǎng) 頁(yè) 制 作 課 程 心 得題目:xxxxxx xx xxxxx xxxxxxxxxx 我制作的動(dòng)態(tài)網(wǎng)頁(yè)的主題是宣傳我的家鄉(xiāng),通過(guò)網(wǎng)頁(yè)將家鄉(xiāng) 的特色表現(xiàn)出來(lái)。通過(guò)網(wǎng)......

        個(gè)人對(duì)Java構(gòu)造方法調(diào)用的總結(jié)(精選)

        個(gè)人對(duì)Java構(gòu)造方法調(diào)用的總結(jié) 1.構(gòu)造方法必須與定義它的類(lèi)有完全相同的名字。構(gòu)造方法沒(méi)有返回類(lèi)型,也沒(méi)有void。 2.類(lèi)可以不聲明構(gòu)造方法,這時(shí)類(lèi)中隱含聲明了一個(gè)方法體為......

        輿情信息(動(dòng)態(tài))撰寫(xiě)方法參考

        輿情信息(動(dòng)態(tài))撰寫(xiě)方法參考 輿情信息,就是群眾對(duì)某較大事件所產(chǎn)生的有一定社會(huì)影響的看法(亦即社情民意)。在工作中,要注意以下幾點(diǎn): 一、收集 要“圍繞大局,關(guān)注大事,把握大勢(shì)”,......

        機(jī)床動(dòng)態(tài)性能實(shí)驗(yàn)方法總結(jié)

        方兵[1]采用力錘對(duì)機(jī)床的立柱施加激勵(lì),通過(guò)多次測(cè)量求平均值的方法得到頻率響應(yīng)函數(shù),進(jìn)而采用模態(tài)分析系統(tǒng)集成的算法便可估計(jì)結(jié)構(gòu)的固有頻率,振型等模態(tài)參數(shù)。 魏要強(qiáng)[2]等采......

        SQL數(shù)據(jù)庫(kù)學(xué)習(xí)筆記與心得(定稿)

        SQL數(shù)據(jù)庫(kù)學(xué)習(xí)筆記與心得 0961140107 SQL是市場(chǎng)占有率最大的數(shù)據(jù)庫(kù)之一,是信息化社會(huì)的產(chǎn)物,是整理、查詢(xún)、分析數(shù)據(jù)的強(qiáng)有力工具。我對(duì)于SQL數(shù)據(jù)庫(kù)的學(xué)習(xí)是在實(shí)驗(yàn)與探索之中......