Spring多數據庫鏈接

項目中需要連接多種不同的數據庫,下面是實現方法的代碼。目前也在找更合適的,能夠實現多數據庫保持連接。   
public JSONArray getDualByJdbc(Database database, String sql) throws ClassNotFoundException, SQLException {
        //聲明Connection對象
        Connection con;
        String driver = "";
        String url = "jdbc:";
        //驅動程序名
        //URL指向要訪問的數據庫名
        if ("oracle".equals(database.getType())) {
            driver = "oracle.jdbc.OracleDriver";
            url += "oracle:thin:@//" + database.getIp() + ":1521/orcl";
        } else if ("sqlserver".equals(database.getType())) {
            driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
            url += "sqlserver://" + database.getIp() + ":" + database.getPort() + ";DatabaseName=" + database.getName();
        }
        //數據庫用戶名  username
        String username = database.getUsername();
        //數據庫密碼    password
        String password = database.getPassword();
        //遍歷查詢結果集
        //加載驅動程序
        Class.forName(driver);
        //1、連接數據庫
        con = DriverManager.getConnection(url, username, password);
        if (!con.isClosed()) {
            //2、創建statement類對象,用來執行sql語句
            Statement statement = con.createStatement();
            //3、ResultSet類,用來存放獲取的結果集
            JSONArray array = new JSONArray();
            ResultSet rs = statement.executeQuery(sql);
            ResultSetMetaData metaData = rs.getMetaData();
            int columnCount = metaData.getColumnCount();
            while (rs.next()) {
                JSONObject json = new JSONObject();
                for (int i = 1; i <= columnCount; i++) {
                    String columnName = metaData.getColumnLabel(i);
                    String value = rs.getString(columnName);
                    json.put(columnName, value);
                }
                array.add(json);
            }
            rs.close();
            con.close();
            return array;
        }
        return null;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章