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; }