1

前の質問に続いて、コードの犯人はこのオブジェクトであることがわかりました

Java のクラス Connection から「conn」というオブジェクトがあります。

動作する私の古いコードでは、オブジェクト名の強調表示はありません。以下に示すように。

ここに画像の説明を入力

ただし、Eclipse の新しいバージョンのコードでは、そのオブジェクトが常に null であるため、オブジェクトが強調表示されているため機能しません。

ここに画像の説明を入力

私のDatabaseLogicクラス

    package org.ari;

//class dependencies
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class DatabaseLogic
{
    private static Connection conn;

    public static String openDatabase() throws IOException, SQLException,
            NamingException
    {


        // context class gives naming standards of the surrounding environment
        // of the servlet i.e. the web server ,
        // allowing the servlet to interface with the web servers resources
        Context initialContext = new InitialContext();
        Context envContext = (Context) initialContext.lookup("java:comp/env");
        // servlet looks up for a connection pool called "jdbc/POOL"
        DataSource ds = (DataSource) envContext.lookup("jdbc/POOL");
        // connection is then made/requests to connection pool

        String result = ds.toString();


        try
        {
            conn = ds.getConnection();
        }
        catch (SQLException e)
        {
            System.out.println( e.toString());          
        }


        return result;
    }

    public static void closeDatabase()
    {
        try
        {
            conn.close();
        }
        catch (SQLException e)
        {

        }
    }

    // queryId is the parameter to be used for querying for relevant records
    // - possibly change name to make it less specific e.g. recordid
    public static String getData(String queryId, int requestNumber)
            throws SQLException
    {
        String result = "";
        if (queryId != null)
        {
            try
            {

                if (conn == null)
                { 
                    //result = "We are in here";
                    result = openDatabase(); 
                }

                // prepare a statement for use in query

                Statement stmt = conn.createStatement();
                // query parameratised with queryId
                String qry = "SELECT RECORD_ID, USER_ID, OPERATION_CD, BUSCOMP_NAME, OPERATION_DT, FIELD_NAME, OLD_VAL, NEW_VAL, AUDIT_LOG, ROW_ID, BC_BASE_TBL FROM S_AUDIT_ITEM WHERE RECORD_ID='"
                        + queryId + "'";
                ResultSet results = stmt.executeQuery(qry);
                result = XMLBuilder.xmlBuilder(results, queryId,
                        requestNumber);
                // close the connection
                stmt.close();
                results.close();
            }
            catch (Exception e)
            {
                // log.error("Cannot connect to database :" + e);


            }
        }
        else
        {
            // not sure if ever reached
            result = "The query parameter  is a null value";
        }
        return result;
    }

}

この強調表示はどういう意味ですか。日食がこのオブジェクトを別の方法で扱っていると推測しています。これが、このオブジェクトが本来の機能を果たさなくなった理由です。

これを修正するにはどうすればよいですか?古いバージョンのコードを復元しようとしましたが、この強調表示は同じです。

IDEのどこかに設定があると思います。

ありがとう

4

1 に答える 1