连接和SqlServerConnection不匹配

时间:2014-06-18 15:31:19

标签: java eclipse connection

道歉使用的道歉。

我有一个泛型类,我想用它来填充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)。

我如何搭桥?我只是无法绕过这个。

1 个答案:

答案 0 :(得分:1)

通过调用getConnJdbcSqlServer从JdbcSQLServerConnection获取连接并将返回的对象传递给ComboBoxFilter

例如:

JdbcSQLServerConnection sqlConnection= new JdbcSQLServerConnection(path);
sqlConnection.Connect();

Connection connection = sqlConnection.getConnJdbcSqlServer();
ComboBoxFiller(connection,...);