Java鏈接GBase並封裝增刪改查

1.介紹

GBase 是南大通用數據技術有限公司推出的自主品牌的數據庫產品,目前在國內數據庫市場具備較高的品牌知名度;GBase品牌的系列數據庫都具備本身鮮明的特色和優點:GBase 8a 是國內第一個基於列存的新型分析型數據庫;java

GBase是一款小衆的、商業數據庫,閉源。git

2.操做

個人GBase8a版本以下github

GBase client Free Edition 8.6.2.33-R3.97866. Copyright (c) 2004-2019, GBase.  All Rights Reserved.

 

Java鏈接GBase所需jar包sql

百度網盤連接:https://pan.baidu.com/s/1zn-11p9ZcGslLAAd80zkbQ數據庫

提取碼:yyykapp

2.1 建立連接

public static Connection connectGBase() { //加載MySql的驅動類
        try { Class.forName("com.gbase.jdbc.Driver"); } catch (ClassNotFoundException e) { logger.error("找不到驅動程序類 ,加載驅動失敗!"); e.printStackTrace(); } //URL
        String url = "jdbc:gbase://192.168.94.140:5258/power"; //帳號
        String username = "root"; //密碼
        String password = "123456"; try { conn = DriverManager.getConnection(url,username,password); } catch (SQLException e) { logger.error("數據庫鏈接失敗!"); e.printStackTrace(); } return conn; }

2.2 關閉數據庫連接

//關閉數據庫鏈接
    public static  void closeConnection(){ if(rs!=null){ try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if(pstmt!=null){ try { pstmt.close(); } catch (SQLException e) { e.printStackTrace(); } } if(conn!=null){ try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } }

2.3 查詢方法

/** * @Author 谷天樂 * @Description 查詢方法 * @Date 2019/2/13 10:32 * @Param [sql] * @return java.sql.ResultSet **/
    public static ResultSet query(String sql) throws SQLException, ClassNotFoundException { conn = connectGBase(); pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); return rs; }

2.4 通用增刪改方法

/** * @Author 谷天樂 * @Description 支持insert,delete,update操做 * 參數按順序和佔位符對應傳入 * demo: * update("update aa set name = ? where id = ?",new Object[]{"7","1"}); update("insert into aa (id,name) values (?,?)",new Object[]{"5","6"}); update("delete from aa where id = ?",new Object[]{"5"}); * @Date 2019/2/13 10:32 * @Param [sql, values] * @return void **/
    public static void update(String sql,Object []values) throws SQLException, ClassNotFoundException { //獲取數據庫連接
        conn=connectGBase(); try { //預編譯
            pstmt=conn.prepareStatement(sql); //獲取ParameterMetaData()對象
            ParameterMetaData pmd=pstmt.getParameterMetaData(); //獲取參數個數
            int number=pmd.getParameterCount(); //循環設置參數值
            for (int i = 1; i <=number; i++) { pstmt.setObject(i, values[i-1]); } pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } }

2.5 輸出

/** * @Author 谷天樂 * @Description 輸出查詢結果 * @Date 2019/2/13 10:33 * @Param [rs] * @return void **/
    public static void output(ResultSet rs) throws SQLException { ResultSetMetaData md = rs.getMetaData(); //獲得結果集(rs)的結構信息,好比字段數、字段名等
        int columnCount = md.getColumnCount(); while(rs.next()) { StringBuffer sb = new StringBuffer(); for (int i = 1; i <= columnCount; i++) { sb.append(rs.getObject(i)+" "); } logger.debug(sb); } }

2.6 查詢結果規範化

將ResultSet轉換成Listurl

/** * @Author 谷天樂 * @Description 將ResultSet轉換成List * @Date 2019/2/13 10:31 * @Param [rs] * @return java.util.List **/
    public static List resultSetToList(ResultSet rs) throws java.sql.SQLException { if (rs == null) return Collections.EMPTY_LIST; //獲得結果集(rs)的結構信息,好比字段數、字段名等
        ResultSetMetaData md = rs.getMetaData(); //返回此 ResultSet 對象中的列數
        int columnCount = md.getColumnCount(); List list = new ArrayList(); Map rowData; while (rs.next()) { rowData = new HashMap(columnCount); for (int i = 1; i <= columnCount; i++) { rowData.put(md.getColumnName(i), rs.getObject(i)); } list.add(rowData); } return list; }

完整代碼:https://github.com/cjy513203427/Java_Advanced_Knowledge/blob/master/src/com/advance/JDBC/Connect_GBase.javaspa

相關文章
相關標籤/搜索