0

そのため、MySQL データベースにクエリを実行し、ユーザーの要求に基づいて従業員情報を返す動的 Web プロジェクトがあります。

例: htp://localhost:8080/Employees/123 //従業員 123 に関する情報を返す htp://localhost:8080/Employees //すべての従業員に関する情報を返す

つまり、データベースが更新され、誰かが新しく挿入された従業員を要求すると、プログラムは null ポインターをスローします。データベースに変更があった場合にのみ、更新を通知または確認する方法はありますか?

これは、mySQL に関する唯一の関連コードです。残りは、使用している 2 つのハッシュマップから実行されます。

package resources;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Connection;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.util.HashMap;

import pojo.Party;

public class DBConnection {

    private Connection con;
    private static Statement statement;
    private static ResultSet resultSet;
    public  static DBConnection connection;
    private static ResultSetMetaData meta;
    private static HashMap<String,Party> map;

    public Party party;

    private DBConnection()
    {
        try 
        {
            map = new HashMap<String,Party>();
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection(//not relevant, assume this works);
            statement = con.createStatement();
            readData();
        }
        catch (Exception e)
        {
            System.out.print("Error: "+e);
        }
    }
    public void readData()
    {
        try
        {
            String query = "(SELECT * FROM PureServlet)";
            resultSet = statement.executeQuery(query);
            meta = resultSet.getMetaData();
            String columnName, value, partyName;
            while(resultSet.next())
            {
                partyName = resultSet.getString("PARTY_NAME");
                map.put(partyName, new Party()); //this is the map that keeps track of all parties
                party = map.get(partyName);
              //getColumn...() irritatingly starts at 1 and not 0 thus j=1
                for(int j=1;j<=meta.getColumnCount();j++)
                {
                    columnName = meta.getColumnLabel(j);
                    value = resultSet.getString(columnName);
                    party.getPartyInfo().put(columnName, value); //this is the hashmap within the party that keeps 
                    //track of the individual values. The column Name = label, value is the value
                }
            }
        }
        catch (Exception e)
        {
            System.out.println(e);
        }
    }
    public static HashMap<String,Party> getPartyCollection()
    {
        if(connection == null)
        {
            connection = new DBConnection();
        }
        return map;
    }
}
4

0 に答える 0