日期:2014-05-16 浏览次数:20345 次
上篇文章记录了配置文件的读写,属于系统功能的模块。而预处理、处理以及生产部分的实验,在本文章进行总结。
预处理部分从文本元数据文件中读入文件,然后解析成数据表的内容,最后写入数据库。这个过程可以分为读文件、解析和写库三个部分。
读文件:使用br = new BufferedReader(new FileReader(file));来打开文件,进行读文件。使用StringBuffer来分行存储读入的数据文件到内存中。
解析文件:因为文件单行数据需要解析到数据库表中的一行中,所以需要对各行进行解析。又因为各行数据格式并不一致,所以需要分立地对数据进行解析,因此最好的方法是使用正则表达式来分离数据。例如使用:Pattern.matches("[PTI]+",rec[0])来匹配以PTI三字母之一开头的字串。
写库:将文件从数据库中读出,输出到文件中去。
FileWriter fw = new FileWriter(newFile(fileName)); fw.write(getStationFromDb());
处理部分是对数据库进行CURD操作,这部分牵涉到质量控制部分,以后才会有更深入的使用。这里只是讲述下使用的一般方法,类似与上文读取,写入内容,数据库操作方法为:
新建数据库连接类,单例模式下返回数据库连接对象:getInstance()函数返回连接对象。单例模式如下:
public static Connection getInstance(){ if (conn == null) { try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); String url ="jdbc:sqlserver://localhost:1433;databaseName=weather"; try { conn = DriverManager.getConnection(url,"ThisIsAUserName","ThisIsAPassword"); } catch (SQLException e) { e.printStackTrace(); } return conn; } catch (ClassNotFoundException e) { e.printStackTrace(); } } else { return conn; } return conn; }
在操作中使用PreparedStatement对数据进行读写操作。
PreparedStatement pstmt = this.conn.prepareStatement("INSERT INTOtest (?)"); pstmt.setString(1,info[0]); status= pstmt.executeUpdate();
生产就是把数据从数据库中读出,新建一个文本文件。这个过程比较简单,读取使用CUDR操作,生成文件使用:
FileWriter fw =new FileWriter(new File(fileName)); fw.write(getStationFromDb()); fw.flush(); fw.close();
需要思考的是,上文解析时使用的正则表达式,能不能在这里使用,缩短开发步骤呢。
大体上的流程处理功能,在这个基础上就已经可以使用了。但是效率问题,架构何不合理、代码规不规范这里都没有考虑。所以下一步还是要从架构和设计上重新思考。
参考:
1. QX项目实战-1.需求分析
2. QX项目实战-2.模块分类以及配置读取