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);
}
}
}
}
没有评论:
发表评论