我们在将SQL语句嵌入应用程序时,必须按以下的两个步骤预编译应用程序并将其与数据库联编,步骤如下:
1.创建源文件,以包含带嵌入式SQL语句的程序 。
格式: # SQL{ SQL语句 } 。
2.连接数据库,然后预编译每个源文件 。
语法: SQLJ 源文件名 。
实例如下:
- import java.sql.*;
-
- import sqlj.runtime.*;
-
- import sqlj.runtime.ref.*;
-
- #sql iterator App_Cursor1 (String empno, String firstnme) ;
-
- #sql iterator App_Cursor2 (String) ;
-
- class App
-
- {
-
- static
-
- {
-
- try
-
- {
-
- Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
-
- }
-
- catch (Exception e)
-
- {
-
- e.printStackTrace();
-
- }
-
- }
-
- public static void main(String argv[])
-
- {
-
- try
-
- {
-
- App_Cursor1 cursor1;
-
- App_Cursor1 cursor2;
-
- String str1 = null;
-
- String str2 = null;
-
- int count1;
-
- Connection con = null;
-
- String url = "jdbc:odbc:tese2";
-
- DefaultContext ctx = DefaultContext.getDefaultContext();
-
- if (ctx == null) {
-
- try {
-
- if (argv.length == 0) {
-
- String userid ="tdl";
-
- String passwd ="user";
-
- con = DriverManager.getConnection(url, userid, passwd);
-
- }
-
- else if (argv.length == 2) {
-
- // connect with default id/password
-
- con = DriverManager.getConnection(url);
-
- }
-
- else {
-
- System.out.println("Usage: java App [username password]");
-
- System.exit(0);
-
- }
-
- con.setAutoCommit(false);
-
- ctx = new DefaultContext(con);
-
- }
-
- catch (SQLException e) {
-
- System.out.println("Error: could not get a default context");
-
- System.err.println(e) ;
-
- System.exit(1);
-
- }
-
- DefaultContext.setDefaultContext(ctx);
-
- }
-
- #sql cursor1 = { SELECT empno, firstnme from db2admin.employee };
-
-
- System.out.println("Received results:");
-
- while (cursor1.next()) {
-
- str1 = cursor1.empno();
-
- str2 = cursor1.firstnme();
-
- System.out.print (" empno= " + str1);
-
- System.out.print (" firstname= " + str2);
-
- System.out.print ("");
-
- }
-
- cursor1.close();
-
- #sql cursor2 = { SELECT firstnme from db2admin.employee where empno = :str1 };
-
- System.out.println("Received results:");
-
- while (true) {
-
- #sql { FETCH :cursor2 INTO :str2 };
-
- if (cursor2.endFetch()) break;
-
- System.out.print (" empno= " + str1);
-
- System.out.print (" firstname= " + str2);
-
- System.out.print ("");
-
- }
-
- cursor2.close();
-
- // rollback the update
-
- System.out.println("Rollback the update...");
-
- #sql { ROLLBACK work };
-
- System.out.println("Rollback done.");
-
- }
-
- catch( Exception e )
-
- {
-
- e.printStackTrace();
-
- }
-
- }
-
- }
注:本程序采用JDBCODBC桥的方式访问数据库,必须配置ODBC数据源 。
关于嵌入式SQL(SQLJ)的知识就介绍到这里了,希望本次的介绍能够给您带来一些收获!