数据库升级代码学习
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了数据库升级代码学习,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3431字,纯文字阅读大概需要5分钟。
内容图文
![数据库升级代码学习](/upload/InfoBanner/zyjiaocheng/460/312374b19dce45358dee0c779695f9d7.jpg)
思路:1)数据库里面有个对应的版本号号,服务里面有个版本号文件【以要升级到的版本号号命名】。
2)升级的时候查出服务里面的版本号和数据库里面的版本号,比对:假设版本号一样不升级。假设版本号不一样就运行服务里面的升级脚本.
以下看看基本的思路代码作为笔记,以后能够參考。
一)获取服务里面的全部脚本版本号文件名:以一个数组形式存在方便以后多个版本号的时候扩展用。
/** * 获取全部脚本版本号文件名称称 */ private ArrayList<String> getVersionsForFilePath(){ String filePath = ""; ArrayList<String> fileName = new ArrayList<String>(); try { // filePath为放置数据库升级脚本的文件夹 filePath = PropertiesHander.class.getResource("/assp/evoucher/sql/").toString(); filePath = filePath.replace("file:", ""); // 获取filePath下的全部文件名称 File dir = new File(filePath); // 返回此抽象路径下的文件 File[] files = dir.listFiles(); <strong> /<span style="color:#cc0000;">/展开该文件【以一个数组,由于该文件下可能有非常多个文件夹或者文件】</span></strong> for (int i = 0; i < files.length; i++) { // 推断此文件是否是一个文件 if (files[i].isDirectory()) { fileName.add(files[i].getName()); } } // 由小到大排序 String templte = ""; for (int i = 0; i < fileName.size() - 1; i++) { for (int j = 0; j < fileName.size() - i - 1; j++) { if (fileName.get(j).compareTo(fileName.get(j + 1)) > 0) { templte = fileName.get(j); fileName.set(j, fileName.get(j + 1)); fileName.set(j + 1, templte); } } } } catch (Exception e) { throw new EVoucherException("获取自己主动升级脚本文件【 " +filePath+ " 】失败,检查配置是否正确。", e); } return fileName; }
二)依据当前版号及当前服务使用的数据库类型获取相应升级脚本
/** * 依据当前版号及当前服务使用的数据库类型获取相应升级脚本 * @param version * @param userBbType */ public Map<String, String[]> getSqlScriptsForDBType(String version, String userBbType){ Map<String, String[]> map = new HashMap<String, String[]>(); try { String filePath = DataBaseUPdateThread.class.getResource("/assp/evoucher/sql/" + version + "/" + userBbType).toString(); filePath = filePath.replace("file:", ""); // 获取filePath下的全部文件名称 File dir = new File(filePath); // 返回此抽象路径下的文件 File[] files = dir.listFiles(); for (int i = 0; i < files.length; i++) { // 推断此文件是否是一个文件 if (!files[i].isDirectory()) { map.put(files[i].getName(), this.getResourceString(files[i].getPath())); logger.info("获取版本【 " + version + " 】,数据库类型为【 " + userBbType + " 】相应的升级脚本【 " + files[i].getName() + " 】完毕。"); } } } catch (Exception e) { throw new EVoucherException("获取版本【 " + version + " 】,数据库类型为【 " + userBbType + " 】相应的升级脚本失败。", e); } return map; }
三)依据路径获取数据库脚本
/** * 依据路径获取数据库脚本 * @param sqlAbsolutePath * @return * @throws Exception */ private String[] getResourceString(String sqlAbsolutePath) throws Exception { // 返回读取指定资源的输入流 InputStream is = new FileInputStream(sqlAbsolutePath); BufferedReader br = new BufferedReader(new InputStreamReader(is,"utf-8")); String s = ""; StringBuffer sb = new StringBuffer(); while ((s = br.readLine()) != null) sb.append(s).append("\n"); if(br != null){ br.close(); } if (is != null) { is.close(); } return sb.toString().split(";"); }
数据库升级代码学习
标签:
本文系统来源:http://www.cnblogs.com/hrhguanli/p/5092558.html
内容总结
以上是互联网集市为您收集整理的数据库升级代码学习全部内容,希望文章能够帮你解决数据库升级代码学习所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。