使用JDBC操作EXCEL的新方法

本文介绍了一种使用Java和SQL操作Excel文件的方法,通过Sqlhub可以在Java中利用SQL的强大功能进行Excel数据的操作,包括创建表、执行查询等。

        Excel是常用的办公工具,如果你是一个sql高手,可能希望能用SQL来操作Excel文件,因为有时候用SQL操作数据更简单,功能更强。目前在Java中用sql操作excel文件的方法一般是通过jdbc-odbc桥。这种方式功能弱,且不能跨平台。Sqlhub是一个分布式异构数据库,它内置了对excel支持。通过它可以用到hgsql的所有特性,且简单方便。

例如:目前我们有 excel文件:d:/tmp/员工.xls,内容如下:
编写如下 Java代码:注意运行下面的代码需要hg.jar和poi.jar两个java库文件。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
 
public class Test {
    public static void main(String[] args) {
        try {
            //注册本地驱动
            Class.forName("com.hg.jdbc.HgLocDriver");
            //获取本地连接
            Connection conn = DriverManager.getConnection("jdbc:hg:loc:$ram", "hg", "hg");
            Statement stmt = conn.createStatement();
            String sql;
            //创建表
            sql = "create table excel.员工 file 'd:/tmp/员工.xls' (编号,姓名,职位,上级,出生日期,工资,奖金,部门)";
            stmt.executeUpdate(sql);
            //执行查询
            sql = "select * from excel.员工 ";
            ResultSet rst = stmt.executeQuery(sql);
            //输出查询结果字段
            ResultSetMetaData rsmd = rst.getMetaData();
            int n = rsmd.getColumnCount();
            for (int i = 1; i <= n; i++) {
                if (i > 1) {
                    System.out.print(",");
                }
                System.out.print(rsmd.getColumnName(i));
            }
            System.out.println("/n---------------------------");
            //输出查询结果记录
            while (rst.next()) {
                for (int i = 1; i <= n; i++) {
                    if (i > 1) {
                        System.out.print(",");
                    }
                    System.out.print(rst.getString(i));
                }
                System.out.print("/n");
            }
            rst.close();
            stmt.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
运行结果
编号 ,姓名,职位,上级,出生日期,工资,奖金,部门
---------------------------
0001,王东 ,职员,0013,1980-02-05,800.0,0,20
0002,李海卫 ,销售,0006,1979-08-15,1600.0,300,30
0003,张空 ,销售,0006,1982-08-07,1250.0,500,30
0005,刘龙维 ,销售,0006,1982-10-13,1250.0,1400,30
0008,王芳 ,主管,0004,1981-10-18,3000.0,0,20
0011,宋建 ,职员,0008,1980-01-23,1100.0,0,20
0007,关心 ,经理,0009,1978-07-27,2450.0,0,10
0006,张云 ,经理,0009,1977-02-14,2850.0,0,30
0010,张凯 ,销售,0006,1979-07-29,1500.0,200,30
0015,刘固 ,顾问,0009,1980-01-22,3000.0,0,10
0004,孔兵 ,经理,0009,1982-03-01,2975.0,0,20
0013,刘海星 ,主管,0004,1978-01-30,3000.0,0,20
0009,刘程飞 ,总经理,,1982-01-17,5000.0,0,10
0012,李保 ,职员,0006,1982-04-11,950.0,0,30
如果你不想编写 java程序,可以使用SQLHUB管理器,可视化的管理:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值