• 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

  • 相关阅读:
    摆动排序 II
    二进制中1的个数
    n的幂
    丢掉的数字
    phpcms直接取子栏目的内容、调用点击量的方法
    phpcms导航栏当前栏目选中方法
    PHP中的全局变量global和$GLOBALS的区别
    phpcms添加子栏目后的读取
    phpcms取内容发布管理中的来源
    cms替换主页
  • 原文地址:https://www.cnblogs.com/Java-Starter/p/10368642.html
Copyright © 2020-2023  润新知