道歉使用的道歉。
我有一个泛型类,我想用它来填充JXComboBoxes。 它看起来像这样:
package Fillers;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.jdesktop.swingx.JXComboBox;
public class ComboBoxFiller {
private Connection connConnection;
private JXComboBox cboComboBox;
private String strComboBoxQuery;
public ComboBoxFiller(Connection connUToolDb, JXComboBox cboComboBox, String strComboBoxQuery) throws SQLException
{
this.connConnection = connUToolDb;
this.cboComboBox = cboComboBox;
this.strComboBoxQuery = strComboBoxQuery;
Fill();
}
public void Fill() throws SQLException {
ResultSet rsComboBox = null;
PreparedStatement prepstmntComboBbox = null;
try {
prepstmntComboBbox = connConnection.prepareStatement(strComboBoxQuery,ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
rsComboBox = prepstmntComboBbox.executeQuery();
cboComboBox.removeAllItems();
while (rsComboBox.next())
{
String ComboBoxItem = rsComboBox.getString(1);
cboComboBox.addItem(ComboBoxItem);
}
}
finally {
try {
rsComboBox.close();
prepstmntComboBbox.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
}
我使用的数据库是SqlServer数据库。要连接到数据库,我使用另一个泛型类。 它看起来像这样。
package DbConnections;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class JdbcSQLServerConnection {
private Connection connJdbcSqlServer;
public void Connect(String dbURL) throws ClassNotFoundException {
try {
//DriverManager.registerDriver(new SQLServerDriver());
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
setConnJdbcSqlServer(DriverManager.getConnection(dbURL));
System.out.println("Connected to SqlServer");
} catch (SQLException ex) {
ex.printStackTrace();
}
}
public Connection getConnJdbcSqlServer() {
return connJdbcSqlServer;
}
public void setConnJdbcSqlServer(Connection connJdbcSqlServer) {
this.connJdbcSqlServer = connJdbcSqlServer;
}
public void Close(){
try {
connJdbcSqlServer.close();
System.out.println("SqlServer Connection Closed...");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
当我想使用SqlServerConnection(com.microsoft.sqlserver.jdbc.SQLServerDriver)填充组合框时,问题就出现了,因为JxComboBoxFiller期望"正常"连接(java.sql.Connection)。
我如何搭桥?我只是无法绕过这个。
答案 0 :(得分:1)
通过调用getConnJdbcSqlServer从JdbcSQLServerConnection获取连接并将返回的对象传递给ComboBoxFilter
例如:
JdbcSQLServerConnection sqlConnection= new JdbcSQLServerConnection(path);
sqlConnection.Connect();
Connection connection = sqlConnection.getConnJdbcSqlServer();
ComboBoxFiller(connection,...);