Symfoware(R) Server JDBCドライバユーザーズガイド - FUJITSU -
目次 索引 前ページ次ページ

上へ第5章 アプリケーションの実行
上へ5.6 デバッグ方法

5.6.3 各メソッドとSQL_SNAPの対応

■データ参照するJavaアプリケーションの場

SQL_SNAPの欄は、SQL_SNAP中のSPI-FUNCTION部分を指しています。下記SQL_SNAPの出力例では(1)〜(7)の部分に該当します。

Javaアプリケーション

SQL_SNAP

(1) Connection con = ds.getConnection();
(2) Statement stmt = con.createStatement();
(3) ResultSet rs = stmt.executeQuery("SELECT A_CHAR
                            FROM JDBCTEST.TABLE01");
    String sName = null;

(4) while(rs.next())
    {
    sName = rs.getString(1);
    }
(5) rs.close();
(6) stmt.close();

(7) con.close();
(1) SQLConnect
(2) SQLAllocHandle
(3) SQLExecDirect
(3) SQLNumResultCols
(3) SQLDescribeCol
(3) SQLBindCol
(4) SQLFetch



(5) SQLFreeStmt
(6) SQLEndTran
(6) SQLFreeHandle
(7) SQLDisconnect

◆出力例

データを参照するJavaアプリケーションを実行した時のSQL_SNAPの出力例を以下に示します。

SQL-SNAP START 17:30:59   05/13
SPI-FUNCTION  : SQLConnect ・・・・・・・・・・・・・(1)
SPI-THREAD-ID : 0x0000002d
SPI-ENVIRONMENT-HANDLE : 1
SPI-CONNECTION-HANDLE  : 2
SPI-INPUT-VARIABLE
       001 : ATTRIBUTE SQLHANDLE
             VALUE    2
       002 : ATTRIBUTE SQLCHAR*
             ADDRESS  0x090d08e0
  (00000000) 4a444243 54455354                     * JDBCTEST         *
       003 : ATTRIBUTE SQLSMALLINT
             VALUE    -3
       004 : ATTRIBUTE SQLCHAR*
             ADDRESS  0x090d08f0
  (00000000) 435431                                * CT1              *
       005 : ATTRIBUTE SQLSMALLINT
             VALUE    3
       006 : ATTRIBUTE SQLCHAR*
             ADDRESS  0x090d0900
  (00000000) 435431                                * CT1              *
       007 : ATTRIBUTE SQLSMALLINT
             VALUE    3
SPI-THREAD-ID : 0x0000002d
SPI-OUTPUT-VARIABLE
SPI-RETURN-CODE : 0
SQLSTATE        : 00000
SQLCODE         : +0000
SQLMSG          : [SymfoWARE ODBC Driver][SymfoWARE Server] JYP2001I 正
                  常に終了しました.
SQL-SNAP END   17:30:59 (00:00:00.301000)
SQL-SNAP START 17:30:59   05/13
SPI-FUNCTION  : SQLAllocHandle(STMT) ・・・・・・・・・・・・・(2)
SPI-THREAD-ID : 0x0000002d
SPI-ENVIRONMENT-HANDLE : 1
SPI-CONNECTION-HANDLE  : 2
SPI-INPUT-VARIABLE
       001 : ATTRIBUTE SQLHANDLE
             VALUE    2
       002 : ATTRIBUTE SQLHANDLE*
             ADDRESS  0x0006fa0c
SPI-THREAD-ID : 0x0000002d
SPI-OUTPUT-VARIABLE
       001 : ATTRIBUTE SQLHANDLE*
             ADDRESS  0x0006fa0c
             VALUE    3
SPI-RETURN-CODE : 0
SQL-SNAP END   17:30:59 (00:00:00.020000)
SQL-SNAP START 17:30:59   05/13
SPI-FUNCTION  : SQLExecDirect ・・・・・・・・・・・・・(3)
SPI-THREAD-ID : 0x0000002d
SPI-ENVIRONMENT-HANDLE : 1
SPI-CONNECTION-HANDLE  : 2
SPI-INPUT-VARIABLE
       001 : ATTRIBUTE SQLHANDLE
             VALUE    3
       002 : ATTRIBUTE SQLCHAR*
             ADDRESS  0x090d0910
  (00000000) 53454c45 43542041  5f434841 52204652  * SELECT A_CHAR FR *
  (00000010) 4f4d204a 44424354  4553542e 5441424c  * OM JDBCTEST.TABL *
  (00000020) 453031                                * E01              *
       003 : ATTRIBUTE SQLINTEGER
             VALUE    35
SPI-THREAD-ID : 0x0000002d
SPI-OUTPUT-VARIABLE
SPI-RETURN-CODE : 0
SQL-SNAP END   17:31:00 (00:00:00.210000)
SQL-SNAP START 17:31:00   05/13
SPI-FUNCTION  : SQLNumResultCols ・・・・・・・・・・・・・(3)
SPI-THREAD-ID : 0x0000002d
SPI-ENVIRONMENT-HANDLE : 1
SPI-CONNECTION-HANDLE  : 2
SPI-INPUT-VARIABLE
       001 : ATTRIBUTE SQLHANDLE
             VALUE    3
       002 : ATTRIBUTE SQLSMALLINT*
             ADDRESS  0x0006f9f0
SPI-THREAD-ID : 0x0000002d
SPI-OUTPUT-VARIABLE
       001 : ATTRIBUTE SQLSMALLINT*
             ADDRESS  0x0006f9f0
             VALUE    1
SPI-RETURN-CODE : 0
SQL-SNAP END   17:31:00 (00:00:00.010000)
SQL-SNAP START 17:31:00   05/13
SPI-FUNCTION  : SQLDescribeCol ・・・・・・・・・・・・・(3)
SPI-THREAD-ID : 0x0000002d
SPI-ENVIRONMENT-HANDLE : 1
SPI-CONNECTION-HANDLE  : 2
SPI-INPUT-VARIABLE
       001 : ATTRIBUTE SQLHANDLE
             VALUE    3
       002 : ATTRIBUTE SQLUSMALLINT
             VALUE    1
       003 : ATTRIBUTE SQLCHAR*
             ADDRESS  0x0006f8d0
       004 : ATTRIBUTE SQLSMALLINT
             VALUE    128
       005 : ATTRIBUTE SQLSMALLINT*
             ADDRESS  0x0006f8b8
       006 : ATTRIBUTE SQLSMALLINT*
             ADDRESS  0x0006f8c8
       007 : ATTRIBUTE SQLUINTEGER*
             ADDRESS  0x0006f8c4
       008 : ATTRIBUTE SQLSMALLINT*
             ADDRESS  0x0006f8bc
       009 : ATTRIBUTE SQLSMALLINT*
             ADDRESS  0x0006f8c0
SPI-THREAD-ID : 0x0000002d
SPI-OUTPUT-VARIABLE
       001 : ATTRIBUTE SQLCHAR*
             ADDRESS  0x0006f8d0
  (00000000) 415f4348 415200                       * A_CHAR           *
       002 : ATTRIBUTE SQLSMALLINT*
             ADDRESS  0x0006f8b8
             VALUE    6
       003 : ATTRIBUTE SQLSMALLINT*
             ADDRESS  0x0006f8c8
             VALUE    1
       004 : ATTRIBUTE SQLUINTEGER*
             ADDRESS  0x0006f8c4
             VALUE    48
       005 : ATTRIBUTE SQLSMALLINT*
             ADDRESS  0x0006f8bc
             VALUE    0
       006 : ATTRIBUTE SQLSMALLINT*
             ADDRESS  0x0006f8c0
             VALUE    0
SPI-RETURN-CODE : 0
SQL-SNAP END   17:31:00 (00:00:00.020000)
SQL-SNAP START 17:31:00   05/13
SPI-FUNCTION  : SQLBindCol ・・・・・・・・・・・・・(3)
SPI-THREAD-ID : 0x0000002d
SPI-ENVIRONMENT-HANDLE : 1
SPI-CONNECTION-HANDLE  : 2
SPI-INPUT-VARIABLE
       001 : ATTRIBUTE SQLHANDLE
             VALUE    3
       002 : ATTRIBUTE SQLUSMALLINT
             VALUE    1
       003 : ATTRIBUTE SQLSMALLINT
             VALUE    1
       004 : ATTRIBUTE SQLPOINTER
             ADDRESS  0x090d0940
       005 : ATTRIBUTE SQLINTEGER
             VALUE    52
       006 : ATTRIBUTE SQLINTEGER*
             ADDRESS  0x090d0974
SPI-THREAD-ID : 0x0000002d
SPI-OUTPUT-VARIABLE
SPI-RETURN-CODE : 0
SQL-SNAP END   17:31:00 (00:00:00.030000)
SQL-SNAP START 17:31:00   05/13
SPI-FUNCTION  : SQLFetch ・・・・・・・・・・・・・(4)
SPI-THREAD-ID : 0x0000002d
SPI-ENVIRONMENT-HANDLE : 1
SPI-CONNECTION-HANDLE  : 2
SPI-INPUT-VARIABLE
       001 : ATTRIBUTE SQLHANDLE
             VALUE    3
SPI-THREAD-ID : 0x0000002d
SPI-OUTPUT-VARIABLE
SPI-RETURN-CODE : 0
SQL-SNAP END   17:31:00 (00:00:00.071000)
SQL-SNAP START 17:31:00   05/13
SPI-FUNCTION  : SQLFreeStmt ・・・・・・・・・・・・・(5)
SPI-THREAD-ID : 0x0000002d
SPI-ENVIRONMENT-HANDLE : 1
SPI-CONNECTION-HANDLE  : 2
SPI-INPUT-VARIABLE
       001 : ATTRIBUTE SQLHANDLE
             VALUE    3
       002 : ATTRIBUTE SQLUSMALLINT
             VALUE    0
SPI-THREAD-ID : 0x0000002d
SPI-OUTPUT-VARIABLE
SPI-RETURN-CODE : 0
SQL-SNAP END   17:31:00 (00:00:00.140000)
SQL-SNAP START 17:31:00   05/13
SPI-FUNCTION  : SQLFreeHandle(STMT) ・・・・・・・・・・・・・(6)
SPI-THREAD-ID : 0x0000002d
SPI-ENVIRONMENT-HANDLE : 1
SPI-CONNECTION-HANDLE  : 2
SPI-INPUT-VARIABLE
       001 : ATTRIBUTE SQLHANDLE
             VALUE    3
SPI-THREAD-ID : 0x0000002d
SPI-OUTPUT-VARIABLE
SPI-RETURN-CODE : 0
SQL-SNAP END   17:31:00 (00:00:00.040000)
SQL-SNAP START 17:31:00   05/13
SPI-FUNCTION  : SQLEndTran
SPI-THREAD-ID : 0x0000002d
SPI-ENVIRONMENT-HANDLE : 1
SPI-CONNECTION-HANDLE  : 2
SPI-INPUT-VARIABLE
       001 : ATTRIBUTE SQLSMALLINT
             VALUE    2
       002 : ATTRIBUTE SQLHANDLE
             VALUE    2
       003 : ATTRIBUTE SQLSMALLINT
             VALUE    0
SPI-THREAD-ID : 0x0000002d
SPI-OUTPUT-VARIABLE
SPI-RETURN-CODE : 0
SQL-SNAP END   17:31:00 (00:00:00.040000)
SQL-SNAP START 17:31:00   05/13
SPI-FUNCTION  : SQLDisconnect ・・・・・・・・・・・・・(7)
SPI-THREAD-ID : 0x0000002d
SPI-ENVIRONMENT-HANDLE : 1
SPI-CONNECTION-HANDLE  : 2
SPI-INPUT-VARIABLE
       001 : ATTRIBUTE SQLHANDLE
             VALUE    2
SPI-THREAD-ID : 0x0000002d
SPI-OUTPUT-VARIABLE
SPI-RETURN-CODE : 0
SQL-SNAP END   17:31:00 (00:00:00.070000)

 

◆SQL文およびSQL文を実行した結果を特定する方

SQL_SNAPから指定されたSQL文およびSQL文を実行した結果を特定する方法を以下に説明します。

指定されたSQL文の特定方法

exucuteQueryメソッド実行時に出力される“SQL-FUNCTION : SQLExecDirect”部分に出力されています。

上記SQL_SNAPでは、SELECT A_CHAR FROM JDBCTEST.TABLE01が出力されています。

SQL文を実行した結果の特定方法

  1. exucuteQueryメソッド実行時に出力される“SQL-FUNCTION : SQLExecDirect”部分の以下の値を確認する。
  2. nextメソッド実行時に出力される“SQL-FUNCTION : SQLFetch”の中から1.で確認した3つの値が同じ部分を探し特定します。

    上記SQL_SNAPでは、“SPI-ENVIRONMENT-HANDLE:1”、“SPI-CONNECT-HANDLE:2”、“ATTRIBUTE SQLHANNDLE:3”が該当します。

■データ更新するJavaアプリケーションの場

Javaアプリケーション

SQL_SNAP

(1) Connection con = ds.getConnection();
(2) Statement stmt = con.createStatement();
(3) stmt.executeUpdate("UPDATE GENERAL.EMPLOYEE 
                   SET NAME= 'gorilla' WHERE ID=1");
(4) stmt.close();

(5) con.close();
(1) SQLConnect
(2) SQLAllocHandle
(3) SQLExecDirect
(3) SQLRowCount
(4) SQLEndTran
(4) SQLFreeHandle
(5) SQLDisconnect

 

■パラメタ指定してデータを参照するJavaアプリケーションの場

Javaアプリケーション

SQL_SNAP

(1) Connection con = ds.getConnection();
(2) PreparedStatement pstmt = con.preparedStatement
    ("SELECT ID,NMAE FROM GENERAL.EMPLOYEE WHERE 
    ID=?");
(3) pstmt.setInt(1, 10);

(4) ResultSet rs = pstmt.executeQuery();
    int iID = 0;
    String sName = null;

(5) while (rs.next())
    {
    iID = rs.getInt(1);
    sName = rs.getString(2);
    }
(6) rs.close();
(7) pstmt.close();

(8) con.close();
(1) SQLConnect
(2) SQLAllocHandle
(2) SQLPrepare

(3) SQLDescribeParam
(3) SQLBindParameter
(4) SQLExecute
(4) SQLNumResultCols
(4) SQLDescribeCol
(4) SQLBindCol
(5) SQLFetch




(6) SQLFreeStmt
(7) SQLEndTran
(7) SQLFreeHandle
(8) SQLDisconnect

SQLDescribeCol、SQLBindColは列数分実行されます。

SQLFetchはデータ件数+1回分実行されます。

 

■パラメタ指定してデータを更新するJavaアプリケーションの場

Javaアプリケーション

SQL_SNAP

(1) Connection con = ds.getConnection();
(2) PreparedStatement pstmt = 
        con.prepareStatement("INSERT INTO   
        GENERAL.EMPLOYEE(ID,NAME) VALUES(1,?)");
(3) pstmt.setString(1,"monkey");

(4) pstmt.executeUpdate();

(5) pstmt.close();

(6) con.close();
(1) SQLConnect
(2) SQLAllocHandle
(2) SQLPrepare

(3) SQLDescribeParam
(3) SQLBindParameter
(4) SQLExecute
(4) SQLRowCount
(5) SQLEndTran
(5) SQLFreeHandle
(6) SQLDisconnect

 


■ストアドプロジジャを実行するJavaアプリケーションの場

Javaアプリケーション

SQL_SNAP

(1) Connection con = ds.getConnection();
(2) CallableStatement cstmt = 
    con.prepareCall("{CALL GENERAL.PROC[?]}");
(3) cstmt.setInt(1,7);

(4) cstmt.executeUpdate();

(5) cstmt.close();

(6) con.close();
(1) SQLConnect
(2) SQLAllocHandle
(2) SQLPrepare
(3) SQLDescribeParam
(3) SQLBindParameter
(4) SQLExecute
(4) SQLRowCount
(5) SQLEndTran
(5) SQLFreeHandle
(6) SQLDisconnect

目次 索引 前ページ次ページ

All Rights Reserved, Copyright (C) 富士通株式会社 2003