Hello, JDBC Type1(Jasmin) World!

Posted on 10月 28th, 2012 by cx20

JDBC Type1

JDBC(Java Database Connectivity)は、Java 用のデータベース接続 API である。実装方法によりType1~4の4つのタイプが存在する。
Type1 は JDBC と ODBC の API をマップさせたブリッジドライバである。
以下は Jasmin による JDBC ライブラリの使用例となっている。

ソースコード(Jasmin + JDBC Type1 + ODBC + Jet データベース)

; Produced by NeoJasminVisitor (tinapoc)
; http://tinapoc.sourceforge.net
; The original JasminVisitor is part of the BCEL
; http://jakarta.apache.org/bcel/
; Tue Oct 16 02:25:36 JST 2012
 
.bytecode 50.0
.source Hello.java
.class  Hello
.super java/lang/Object
 
.method  <init>()V
    .limit stack 1
    .limit locals 1
    .var 0 is this LHello; from Label0 to Label1
 
    Label0:
.line 4
       0: aload_0
       1: invokespecial java/lang/Object/<init>()V
 
    Label1:
       4: return
 
.end method
 
.method public static main([Ljava/lang/String;)V
    .limit stack 3
    .limit locals 4
    .var 0 is arg0 [Ljava/lang/String; from Label2 to Label3
 
    Label2:
.line 7
       0: ldc "sun.jdbc.odbc.JdbcOdbcDriver"
       2: invokestatic java/lang/Class/forName(Ljava/lang/String;)Ljava/lang/Class;
       5: pop
 
    .line 9
       6: ldc "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=hello.mdb"
       8: ldc ""
      10: ldc ""
      12: invokestatic java/sql/DriverManager/getConnection(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/Connection;
      15: astore_1
 
    .line 10
      16: aload_1
      17: invokeinterface java/sql/Connection/createStatement()Ljava/sql/Statement; 1
      22: astore_2
 
    .line 11
      23: aload_2
      24: ldc "SELECT 'Hello, JDBC Type1 World!' AS Message"
      26: invokeinterface java/sql/Statement/executeQuery(Ljava/lang/String;)Ljava/sql/ResultSet; 2
      31: astore_3
 
    Label1:
.line 12
      32: aload_3
      33: invokeinterface java/sql/ResultSet/next()Z 1
      38: ifeq Label0
 
    .line 13
      41: getstatic java.lang.System.out Ljava/io/PrintStream;
      44: aload_3
      45: iconst_1
      46: invokeinterface java/sql/ResultSet/getString(I)Ljava/lang/String; 2
      51: invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
      54: goto Label1
 
    Label0:
.line 15
      57: aload_3
      58: invokeinterface java/sql/ResultSet/close()V 1
 
    .line 16
      63: aload_2
      64: invokeinterface java/sql/Statement/close()V 1
 
    .line 17
      69: aload_1
      70: invokeinterface java/sql/Connection/close()V 1
 
    Label3:
.line 18
      75: return
 
    .throws java/lang/Exception
.end method

ソースコード(Jasmin + JDBC Type1 + ODBC + ACE データベース)

; Produced by NeoJasminVisitor (tinapoc)
; http://tinapoc.sourceforge.net
; The original JasminVisitor is part of the BCEL
; http://jakarta.apache.org/bcel/
; Tue Oct 16 02:25:49 JST 2012
 
.bytecode 50.0
.source Hello.java
.class  Hello
.super java/lang/Object
 
.method  <init>()V
    .limit stack 1
    .limit locals 1
    .var 0 is this LHello; from Label0 to Label1
 
    Label0:
.line 4
       0: aload_0
       1: invokespecial java/lang/Object/<init>()V
 
    Label1:
       4: return
 
.end method
 
.method public static main([Ljava/lang/String;)V
    .limit stack 3
    .limit locals 4
    .var 0 is arg0 [Ljava/lang/String; from Label2 to Label3
 
    Label2:
.line 7
       0: ldc "sun.jdbc.odbc.JdbcOdbcDriver"
       2: invokestatic java/lang/Class/forName(Ljava/lang/String;)Ljava/lang/Class;
       5: pop
 
    .line 11
       6: ldc "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=.\hello.accdb"
       8: ldc ""
      10: ldc ""
      12: invokestatic java/sql/DriverManager/getConnection(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/Connection;
      15: astore_1
 
    .line 13
      16: aload_1
      17: invokeinterface java/sql/Connection/createStatement()Ljava/sql/Statement; 1
      22: astore_2
 
    .line 14
      23: aload_2
      24: ldc "SELECT 'Hello, JDBC Type1 World!' AS Message"
      26: invokeinterface java/sql/Statement/executeQuery(Ljava/lang/String;)Ljava/sql/ResultSet; 2
      31: astore_3
 
    Label1:
.line 15
      32: aload_3
      33: invokeinterface java/sql/ResultSet/next()Z 1
      38: ifeq Label0
 
    .line 16
      41: getstatic java.lang.System.out Ljava/io/PrintStream;
      44: aload_3
      45: iconst_1
      46: invokeinterface java/sql/ResultSet/getString(I)Ljava/lang/String; 2
      51: invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
      54: goto Label1
 
    Label0:
.line 18
      57: aload_3
      58: invokeinterface java/sql/ResultSet/close()V 1
 
    .line 19
      63: aload_2
      64: invokeinterface java/sql/Statement/close()V 1
 
    .line 20
      69: aload_1
      70: invokeinterface java/sql/Connection/close()V 1
 
    Label3:
.line 21
      75: return
 
    .throws java/lang/Exception
.end method

ソースコード(Jasmin + JDBC Type1 + ODBC + SQL Server)

; Produced by NeoJasminVisitor (tinapoc)
; http://tinapoc.sourceforge.net
; The original JasminVisitor is part of the BCEL
; http://jakarta.apache.org/bcel/
; Tue Oct 16 02:08:35 JST 2012
 
.bytecode 50.0
.source Hello.java
.class  Hello
.super java/lang/Object
 
.method  <init>()V
    .limit stack 1
    .limit locals 1
    .var 0 is this LHello; from Label0 to Label1
 
    Label0:
.line 4
       0: aload_0
       1: invokespecial java/lang/Object/<init>()V
 
    Label1:
       4: return
 
.end method
 
.method public static main([Ljava/lang/String;)V
    .limit stack 3
    .limit locals 4
    .var 0 is arg0 [Ljava/lang/String; from Label2 to Label3
 
    Label2:
.line 8
       0: ldc "sun.jdbc.odbc.JdbcOdbcDriver"
       2: invokestatic java/lang/Class/forName(Ljava/lang/String;)Ljava/lang/Class;
       5: pop
 
    .line 11
       6: ldc "jdbc:odbc:Driver={SQL Server};SERVER=(local)"
       8: ldc "sa"
      10: ldc "P@ssW0rd"
      12: invokestatic java/sql/DriverManager/getConnection(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/Connection;
      15: astore_1
 
    .line 13
      16: aload_1
      17: invokeinterface java/sql/Connection/createStatement()Ljava/sql/Statement; 1
      22: astore_2
 
    .line 14
      23: aload_2
      24: ldc "SELECT 'Hello, JDBC Type1 World!' AS Message"
      26: invokeinterface java/sql/Statement/executeQuery(Ljava/lang/String;)Ljava/sql/ResultSet; 2
      31: astore_3
 
    Label1:
.line 15
      32: aload_3
      33: invokeinterface java/sql/ResultSet/next()Z 1
      38: ifeq Label0
 
    .line 16
      41: getstatic java.lang.System.out Ljava/io/PrintStream;
      44: aload_3
      45: iconst_1
      46: invokeinterface java/sql/ResultSet/getString(I)Ljava/lang/String; 2
      51: invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
      54: goto Label1
 
    Label0:
.line 18
      57: aload_3
      58: invokeinterface java/sql/ResultSet/close()V 1
 
    .line 19
      63: aload_2
      64: invokeinterface java/sql/Statement/close()V 1
 
    .line 20
      69: aload_1
      70: invokeinterface java/sql/Connection/close()V 1
 
    Label3:
.line 21
      75: return
 
    .throws java/lang/Exception
.end method

ソースコード(Jasmin + JDBC Type1 + ODBC + Oracle)

; Produced by NeoJasminVisitor (tinapoc)
; http://tinapoc.sourceforge.net
; The original JasminVisitor is part of the BCEL
; http://jakarta.apache.org/bcel/
; Tue Oct 16 02:41:22 JST 2012
 
.bytecode 50.0
.source Hello.java
.class  Hello
.super java/lang/Object
 
.method  <init>()V
    .limit stack 1
    .limit locals 1
    .var 0 is this LHello; from Label0 to Label1
 
    Label0:
.line 4
       0: aload_0
       1: invokespecial java/lang/Object/<init>()V
 
    Label1:
       4: return
 
.end method
 
.method public static main([Ljava/lang/String;)V
    .limit stack 3
    .limit locals 4
    .var 0 is arg0 [Ljava/lang/String; from Label2 to Label3
 
    Label2:
.line 7
       0: ldc "sun.jdbc.odbc.JdbcOdbcDriver"
       2: invokestatic java/lang/Class/forName(Ljava/lang/String;)Ljava/lang/Class;
       5: pop
 
    .line 8
       6: ldc "jdbc:odbc:Driver={Oracle in OraDb11g_home1};DBQ=ORCL"
       8: ldc "scott"
      10: ldc "tiger"
      12: invokestatic java/sql/DriverManager/getConnection(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/Connection;
      15: astore_1
 
    .line 9
      16: aload_1
      17: invokeinterface java/sql/Connection/createStatement()Ljava/sql/Statement; 1
      22: astore_2
 
    .line 10
      23: aload_2
      24: ldc "SELECT 'Hello, JDBC Type1 World!' AS Message FROM DUAL"
      26: invokeinterface java/sql/Statement/executeQuery(Ljava/lang/String;)Ljava/sql/ResultSet; 2
      31: astore_3
 
    Label1:
.line 11
      32: aload_3
      33: invokeinterface java/sql/ResultSet/next()Z 1
      38: ifeq Label0
 
    .line 12
      41: getstatic java.lang.System.out Ljava/io/PrintStream;
      44: aload_3
      45: iconst_1
      46: invokeinterface java/sql/ResultSet/getString(I)Ljava/lang/String; 2
      51: invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
      54: goto Label1
 
    Label0:
.line 14
      57: aload_3
      58: invokeinterface java/sql/ResultSet/close()V 1
 
    .line 15
      63: aload_2
      64: invokeinterface java/sql/Statement/close()V 1
 
    .line 16
      69: aload_1
      70: invokeinterface java/sql/Connection/close()V 1
 
    Label3:
.line 17
      75: return
 
    .throws java/lang/Exception
.end method

ソースコード(Jasmin + JDBC Type1 + ODBC + MySQL)

; Produced by NeoJasminVisitor (tinapoc)
; http://tinapoc.sourceforge.net
; The original JasminVisitor is part of the BCEL
; http://jakarta.apache.org/bcel/
; Tue Oct 16 02:26:06 JST 2012
 
.bytecode 50.0
.source Hello.java
.class  Hello
.super java/lang/Object
 
.method  <init>()V
    .limit stack 1
    .limit locals 1
    .var 0 is this LHello; from Label0 to Label1
 
    Label0:
.line 4
       0: aload_0
       1: invokespecial java/lang/Object/<init>()V
 
    Label1:
       4: return
 
.end method
 
.method public static main([Ljava/lang/String;)V
    .limit stack 3
    .limit locals 4
    .var 0 is arg0 [Ljava/lang/String; from Label2 to Label3
 
    Label2:
.line 7
       0: ldc "sun.jdbc.odbc.JdbcOdbcDriver"
       2: invokestatic java/lang/Class/forName(Ljava/lang/String;)Ljava/lang/Class;
       5: pop
 
    .line 8
       6: ldc "jdbc:odbc:Driver={MySQL ODBC 5.1 Driver};Server=localhost"
       8: ldc "root"
      10: ldc "P@ssW0rd"
      12: invokestatic java/sql/DriverManager/getConnection(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/sql/Connection;
      15: astore_1
 
    .line 9
      16: aload_1
      17: invokeinterface java/sql/Connection/createStatement()Ljava/sql/Statement; 1
      22: astore_2
 
    .line 10
      23: aload_2
      24: ldc "SELECT 'Hello, JDBC Type1 World!' AS Message"
      26: invokeinterface java/sql/Statement/executeQuery(Ljava/lang/String;)Ljava/sql/ResultSet; 2
      31: astore_3
 
    Label1:
.line 11
      32: aload_3
      33: invokeinterface java/sql/ResultSet/next()Z 1
      38: ifeq Label0
 
    .line 12
      41: getstatic java.lang.System.out Ljava/io/PrintStream;
      44: aload_3
      45: iconst_1
      46: invokeinterface java/sql/ResultSet/getString(I)Ljava/lang/String; 2
      51: invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
      54: goto Label1
 
    Label0:
.line 14
      57: aload_3
      58: invokeinterface java/sql/ResultSet/close()V 1
 
    .line 15
      63: aload_2
      64: invokeinterface java/sql/Statement/close()V 1
 
    .line 16
      69: aload_1
      70: invokeinterface java/sql/Connection/close()V 1
 
    Label3:
.line 17
      75: return
 
    .throws java/lang/Exception
.end method

実行方法

C:¥> java -jar jasmin.jar Hello.j
C:¥> java -jar Hello

実行結果

Hello, JDBC Type1 World!

Tags: ,

Categories: JDBC, JDBC Type1

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

WP-SpamFree by Pole Position Marketing