2005-08-03

JDBC 与 SQLJ

JDBC(Java Database Connectivity)和SQLJ都可用于Java编程时与数据库打交道。JDBC具有较好的灵活性,能都处理动态生成的SQL语句,但是缺少类型检查,当SQL表达式有错误时,在执行时才能被发现和捕捉到。而SQLJ虽然灵活性较差,但在编译阶段就会检查SQL表达式的语法是否有错。SQLJ会在编译时就优化SQL查询,而JDBC中只有使用PreparedStatements语句才能达到。

以下是一个SQLJ的一个例子:

import java.io.*;
import java.sql.*;
import sqlj.runtime.*;
import sqlj.runtime.ref.*;

//Der Praefix # dient dazu, dem Uebersetzer des SQLJ-Programms Datenbankbefehle anzuzeigen.
#sql iterator StudentenItr(String Name, int Semester);

public class SQLJExmp {
 
 public static void main(Strings[] argv){
  try{
   Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");
   Connection con = Drivermanager.getConnection("jdbc:db2:uni");
   con.SetAutoCommit(false);
   DefaultContext ctx = new DefaultContext(con);
   DefaultContext.setDefaultContext(ctx);
   
   StudentenItr Methusaleme;
   
   #sql Methusaleme = {select s.Name, s.Semester from Student s
        where s.Semester > 13
   };
   
   while(Methusaleme.next()){
    System.out.println(Methusaleme.Name() + ":"+
         Methusaleme.Semester());
   }
   
   Methusaleme.close();
   
   #sql {delete from Studenten where Semester > 13};
   
   #sql {commit};
     
   }
   
  catch (SQLException e){
   System.out.println("Fehler mit der DB-Verbindung: " + e);   
  }
  
  catch (Exception e){
   System.out.println("Folgender Fehler ist aufgetreten: " + e);
   System.exit(-1);
  }
  
  }
 }
}

没有评论:

发表评论