See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
SQLJ - Wikipedia

SQLJ

出典: フリー百科事典『ウィキペディア(Wikipedia)』

SQLJ(えすきゅーえるじぇい)は、コンピュータJavaプログラムSQL文を埋め込む方法 (埋め込みSQL) を定めたISO標準(ISO/IEC 9075-10)である。

APIであるJDBCとは異なり、SQLJはプログラミング言語Javaを拡張したものである。そのため、SQLJプログラムを実行するためには、プログラムをコンパイルする前にプリプロセッサ(SQLJトランスレータ)で変換しなければならない。

SQLJがJDBCより優れている点は、次のとおりである。

  • SQLJプログラムは、JDBCを使ったJavaプログラムより短くなることが多い。
  • プリプロセス時にSQLの文法をチェックできる。

逆に劣っている点は、次のとおりである。

[編集]

以下の例では、SQLJの文法とJDBCの用法を対比させる。

JDBC SQLJ
複数行のクエリ
PreparedStatement statement = conn.prepareStatement(
    "SELECT LASTNAME"
  + " , FIRSTNME"
  + " , SALARY"
  + " FROM DSN8710.EMP"
  + " WHERE SALARY BETWEEN ? AND ?");
 statement.setBigDecimal(1, min);
 statement.setBigDecimal(2, max);
 ResultSet rs = statement.executeQuery();
 while (rs.next()) {
   lastname = rs.getString(1);
   firstname = rs.getString(2);
   salary = rs.getBigDecimal(3);
   // 行を表示させる...
 }
 rs.close();
 statement.close();
#sql private static iterator EmployeeIterator(String, String, BigDecimal);
 ...
 EmployeeIterator iter;
 #sql [ctx] iter = {
   SELECT LASTNAME
        , FIRSTNME
        , SALARY
     FROM DSN8710.EMP
    WHERE SALARY BETWEEN :min AND :max
 };
 while (true) {
   #sql {
     FETCH :iter
      INTO :lastname, :firstname, :salary
   };
   if (iter.endFetch()) break;
   // 行を表示させる...
 }
 iter.close();
単一行のクエリ
PreparedStatement statement = conn.prepareStatement(
     "SELECT MAX(SALARY), AVG(SALARY)"
   + " FROM DSN8710.EMP");
 rs = statement.executeQuery();
 if (!rs.next()) {
   // エラー -- 該当行なし
 }
 maxSalary = rs.getBigDecimal(1);
 avgSalary = rs.getBigDecimal(2);
 if (rs.next()) {
   // エラー -- 複数行が存在
 }
 rs.close();
 statement.close();
#sql [ctx] {
   SELECT MAX(SALARY), AVG(SALARY)
     INTO :maxSalary, :avgSalary
     FROM DSN8710.EMP
 };
挿入
statement = conn.prepareStatement(
    "INSERT INTO DSN8710.EMP " +
    "(EMPNO, FIRSTNME, MIDINIT, LASTNAME, HIREDATE, SALARY) "
  + "VALUES (?, ?, ?, ?, CURRENT DATE, ?)");
 statement.setString(1, empno);
 statement.setString(2, firstname);
 statement.setString(3, midinit);
 statement.setString(4, lastname);
 statement.setBigDecimal(5, salary);
 statement.executeUpdate();
 statement.close();
#sql [ctx] {
   INSERT INTO DSN8710.EMP
     (EMPNO,  FIRSTNME,   MIDINIT,  LASTNAME,  HIREDATE,     SALARY)
   VALUES
     (:empno, :firstname, :midinit, :lastname, CURRENT DATE, :salary)
 };

[編集] 外部リンク


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -