您的位置:首页 > 编程语言 > Java开发

[Excel Jdbc Driver] [xlsql-Y7] [java jdbc sql操作excel]

2017-02-24 18:39 246 查看
相关原理可以参考http://blog.csdn.net/ailvey/article/details/8779119博客,里面有详细介绍,请务必先看一下,实际操作时候,会遇到一些问题。

本文主要说明具体如何使用xlsql来实现java项目 通过jdbc方式连接excel文档,通过sql语句来执行增删改查等功能。

前言

因为想实现web项目直接发给用户,不需要用户安装任何程序,一键运行web项目,而遇到的问题。

容器tomcat 可以指定相对路径的jdk ,用户可以不用安装jdk,都打包在一起即可,但数据库始终需要安装,所以考虑用excel代替数据库来进行读取,但用poi  jxl 操作excel有一定学习成本,而且不方便excel 与数据库之间的切换,最终考虑用jdbc方式通过sql语句来操作excel文档。

(更新:发现自己犯傻了,居然忘了还有嵌入式数据库这种东西,直接用嵌入式数据就可以了,比如 SQLite

,运行效率更好,支持jdbc,完美整合spring等框架)

注意事项

Excel Jdbc Driver方式操作excel,需要excel格式固定(excel需要老版本97-03 ):

第一行为 英文 大写
的字段名(汉字也可以,尽量不要使用汉字做为字段名),第二行开始为字段信息。

如图:



数据一次性录入,尽量不要多次编辑修改,可先修改好内容,新建sheet页 一次性贴入。

遇到过 删除最后几行,还是会被读取到,字段显示为为null的问题,新建的sheet不会产生这种现象。

需要的jar包

xlsql-Y7.jar  核心jar包(官方的使用有问题,本人用的是ailvey博主提供的jar包,并进行了修改,解决了查询结果包含表头问题,现在默认为第二行开始,不包含第一行表头)

commons-cli-1.0.jar

commons-logging.jar

crimson.jar

hsqldb.jar

jaxp.jar

jconfig.jar

jmxri.jar

jxl.jar

mysql-connector-java-3.0.10-stable-bin.jar

实际使用在项目中,很可能存在jar包冲突问题,。例如用在spring框架中,启动可能有报错,此时可以根据提示信息删除对应的非核心jar包,或者一个一个删除、重新启动,来排查 是哪个jar包有冲突。

代码示例

完全为java jdbc操作,读取excel需要一定时间,建议数据库连接设计为单例,不要关闭,防止重复建立数据库连接 耗时。

建立连接后增删改查都可以高速执行(因为excel信息已缓存到内存,所有操作都在内存中进行),但执行增删改等非查询操作时,不会写入到excel文件,需要代码控制关闭数据库连接才可以写到文件,通过con.close()方式关闭(excel文件全部更新 跟内存中的数据库表一致)。项目中可提供保存更改按钮,用户点击
即执行关闭数据库连接操作,即可批量提交用户修改操作到excel,减少频繁耗时的excel读取操作。

sql语句可参考hsqldb数据库sql规范。

String driver = "com.nilostep.xlsql.jdbc.xlDriver";
Class.forName(driver).newInstance();
String protocol = "jdbc:nilostep:excel";
String database = "C:\\e";//填写excel文件所在的文件夹路径
String url = protocol + ":" + database;
Connection con = DriverManager.getConnection(url);
Statement stm = con.createStatement();
String sql = "select * from \"DEMO.Sheet1\""; //表名称为 excel文件名加上sheet页名称,中间·连接,外面需要有双引号 并\转义
ResultSet rs = stm.executeQuery(sql);
ResultSetMetaData m = null;
m = rs.getMetaData();
int columns = m.getColumnCount();
while (rs.next()) {
for (int i = 1; i <= columns; i++) {
8234
// 循环获取字段信息。()里面也可以写字段名字来一次性获取字段信息 rs.getString("name");
System.out.print(rs.getString(i));
System.out.print("\t\t");
}
System.out.println();
}

相关项目源码文件(正常使用下载这个):http://download.csdn.net/detail/ab2361936/9764570

xlsql-Y7源码项目文件(需要看xlsql-Y7.jar的源码的下载这个):http://download.csdn.net/detail/ab2361936/9764574
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐