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

首頁 > 學院 > 開發設計 > 正文

用SQLJ開發數據庫(3)

2019-11-18 13:38:02
字體:
來源:轉載
供稿:網友

  用SQLJ開發數據庫(3)

   使用SQLJ的開發步驟

   下面是開發和運行一個SQLJ應用程序所需要做的事情:

   使用SQLJ編譯器編譯SQLJ源文件。這一步生成調用SQLJ運行時的java文件,以及二進制的SQLJ描述文件--包括存在于SQLJ源文件中的靜態SQL語句的有關信息。使用Java編譯程序編譯Java代碼。在編輯完成之后,生成的描述文件是使用特定數據庫數據類型,擴展和特征性能定制的。

   運行應用程序,使用SQLJ運行時程序庫和特定數據庫的JDBC驅動程序。舉例來說,假如你的主.sqlj文件定義類MyClass,那么源文件名必須是MyClass.sqlj。編譯器生成MyClass.java源文件,然后編譯程序生成MyClass.class類文件。而且,翻譯器和編譯程序兩者都生成PRofile - key類,MyClass_SJProfileKeys.class。翻譯器根據你怎樣聲明它們來命名迭代程序類與連接上下文類。舉例來說,假如你聲明一個迭代程序,MyIter,將生成一個MyIter.class類文件。

   下面是配置SQLJ的必要條件∶

    SQLJ運行時程序庫

    JDBC驅動程序,例如:JDBC/ODBC橋,Oracle JDBC/OCI驅動程序,Oracle瘦JDBC驅動程序,DB2 JDBC驅動程序等等。

    SQLJ程序將執行的JVM

   現在讓我們比較SQLJ和JDBC,并比較SQLJ/JDBC和PL/SQL。

   SQLJ 與JDBC

   SQLJ開發的目的是完善動態JDBC SQL結構化查詢語言模型和靜態的SQL結構化查詢語言模型。與ODBC和JDBC動態模型不同,靜態模型提供強類型應用程序翻譯時間檢查。這些不僅要求進行SQL語法的編譯時檢驗和SQL語句使用的主機變量的類型兼容,而且查詢本身的正確性與數據庫模型中的表,視圖,存儲過程等等的定義有關。因為所有的SQL語句都要被編譯,SQLJ可以作為一個性能更好的中間媒質。

   SQLJ代碼與JDBC代碼

   對于有輸入參數的SQL語句,SQLJ類通常比等價的動態的SQL語句( JDBC)調用簡短,因為SQLJ運用主機變量把參數傳遞到SQL語句中,當JDBC要求一個單獨的語句把個個參數捆綁起來,檢索每個結果。下面是一條SELECT語句的SQLJ代碼片斷:

String vName; int vSalary; String vJob; Java.sql.Timestamp vDate;
...
#sql { SELECT Ename, Sal
INTO :vName, :vSalary
FROM Emp
WHERE Job = :vJob and HireDate = :vDate };

   下面是相同的SELECT語句的JDBC代碼碎片:


String vName; int vSalary; String vJob; Java.sql.Timestamp vDate;
...
PreparedStatement stmt = connection.prepareStatement(
"SELECT Ename, Sal " +
"INTO :vName, :vSalary " +
"FROM Emp " +
"WHERE Job = :vJob and HireDate = :vDate");

stmt.setString(1, vJob);
stmt.setTimestamp(2, vDate);

ResultSet rs = stmt.executeQuery();
rs.next();

vName = rs.getString(1);
vSalary = rs.getInt(2);

rs.close();


   我們可以看到,直接在一個Java程序中嵌入SQL語句能夠生成比JDBC更加簡明易讀的代碼。因此,SQLJ在Java應用程序有數據庫訪問需要的時候,減少了開發時間和維修代價。SQLJ程序可以在同一個源文件中很輕易地與JDBC代碼相互作用來做到動態的SQL語句調用,或者你也可以在SQLJ語句中使用PL/SQL語句塊來完成這個目的。此外,Oracle 9i增加了在SQLJ代碼直接支持動態SQL的功能。

(未完待續)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 保康县| 井研县| 宕昌县| 灵丘县| 安多县| 靖州| 抚远县| 汶川县| 新绛县| 绿春县| 南昌县| 友谊县| 淳安县| 龙岩市| 秭归县| 黄平县| 武胜县| 黄梅县| 洪湖市| 河北区| 同心县| 廉江市| 双城市| 阿瓦提县| 平利县| 会同县| 辽宁省| 麻江县| 连山| 旅游| 惠东县| 德州市| 汶川县| 太和县| 武陟县| 新绛县| 依安县| 望江县| 通江县| 旬阳县| 波密县|