Java连接GBase并封装增删改查

1.介绍

GBase 是南大通用数据技术有限公司推出的自主品牌的数据库产品,目前在国内数据库市场具有较高的品牌知名度;GBase品牌的系列数据库都具有自己鲜明的特点和优势:GBase 8a 是国内第一个基于列存的新型分析型数据库;

GBase是一款小众的、商业数据库,闭源。

2.操作

我的GBase8a版本如下

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

 

Java连接GBase所需jar包

百度网盘链接:https://pan.baidu.com/s/1zn-11p9ZcGslLAAd80zkbQ

提取码:yyyk

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转换成List

    /**
     * @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.java

posted @ 2019-02-13 10:53  Rest探路者  阅读(2178)  评论(0编辑  收藏  举报
levels of contents