0
我是新来的Java和NetBeans,而我试图创建一个表单,摇摆形式的数据库连接
- 使用JDBC连接
- 读取七列信息连接到数据库,并显示在一个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);
我会尝试调用这个方法。跟进你的建议,你是说我应该创建一个单独的类来执行SQL查询呢?我将阅读美国东部时间(事件调度线程),但如果你能解释更多。我想你是说我应该创建一个存储过程并调用它,而不是 – rambokayambo
@ user1332681我说你应该执行查询你的数据库和在不同的线程中解析这些结果,而不仅仅是一种不同的方法。否则,最终会出现无响应的UI – Robin
不幸的是,我是一个新手,我不知道如何在不同的线程中执行多线程编程 – rambokayambo