私はJavaとNetBeansを初めて使用し、次のようなフォームを作成しようとしています。
- JDBC接続を使用してデータベースに接続します
- 7つの列から情報を読み取り、フォーム上にあるjTableコンポーネントに表示します
私はすでにこれを機能させています。私は今、コードを最適化し、より良いアーキテクチャを使用してデータベース接続とユーザーインターフェイス(UIフォーム)コードを分離しようとしています。これにより、接続を実行するための別のクラスを作成し、このクラスのメソッドを呼び出すだけで済みます。ボタンの後ろのコード。NetBeansとフォームを使用する際の問題は、このクラスなどをインスタンス化する場所がわからないことです。以下は、JDBC接続を実行するために作成したクラスの対応です。
public class ConnectionManager {
private static String url = "jdbc:mysql://localhost:3306/prototypeeop";
private static String driverName = "com.mysql.jdbc.Driver";
private static String username = "root";
private static String password = "triala";
private static Connection con;
private static String url;
public static Connection getConnection() {
try {
Class.forName(driverName);
try {
con = DriverManager.getConnection(url, username, password);
} catch (SQLException ex) {
// log an exception. fro example:
System.out.println("Failed to create the database connection.");
}
} catch (ClassNotFoundException ex) {
// log an exception. for example:
System.out.println("Driver not found.");
}
return con;
}
}
これはすでに.java
ファイルです。JFormがあり、ボタンの後ろでこのメソッドを呼び出す必要があります。これが、接続クラスを使用せずに現在の形式でそれを行う方法です。
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
DefaultTableModel model=(DefaultTableModel)jTable1.getModel();
model.setRowCount(0);
String sql="Select * from eopdata";
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection con=(Connection)DriverManager.getConnection("jdbc:mysql://localhost:3306/prototypeeop","root","jakamuga");
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(sql);
while(rs.next())
{
String Year=rs.getString("Year");
String Month=rs.getString("Month");
String Day=rs.getString("Day");
String MJD=rs.getString("MJD");
Double xarcsec=rs.getDouble("xarcsec");
Double yarcsec=rs.getDouble("yarcsec");
Double UT1UTCsec=rs.getDouble("UT1UTCsec");
model.addRow(new Object[] { Year, Month, Day, MJD,xarcsec,yarcsec,UT1UTCsec});
}
}
catch(Exception e) {
JOptionPane.showMessageDialog(this, e.getMessage());
}
接続でハードコーディングする代わりにクラスを使用するにはどうすればよいですか?クラスはすでに作成していますが、どこでインスタンス化できますか。フォームのメインで実行しますか、それとも次のコードを使用してactioneventコードで実行しますか?
private Connection con = null;
private Statement stmt = null;
private ResultSet rs = null;
con = ConnectionManager.getConnection();
stmt = con.createStatement();
rs = stmt.executeQuery(sql);