使用java以及jdbc不使用第三方库执行sql文件脚本
来源:互联网 发布:accp和java哪个好 编辑:程序博客网 时间:2024/06/16 12:22
使用java执行sql脚本的方法
解析sql脚本,删除不必要的注释和空行
将语句按分号拆开
并将最终的语句放入batch里面 最后进行执行
package test;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.InputStreamReader;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.Arrays;import java.util.List;/* * 使用java以及jdbc执行sql脚本的工具示例代码 */public class SqlHelper { public static void main(String[] args){ String path = "文件地址字符串"; String sql = getText(path); List<String> sqlarr = getSql(sql); for(int i=0; i<10; i++){ System.out.println(i+":"+sqlarr.get(i)); } try{ SqlHelper.execute(getConn(),sqlarr); }catch(Exception e){ e.printStackTrace(); } } private static Connection getConn() { String driver = "com.mysql.jdbc.Driver"; String url = "数据库连接"; String username = "账号"; String password = "密码"; Connection conn = null; try { Class.forName(driver); //classLoader,加载对应驱动 conn = (Connection) DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } public static void execute(Connection conn, List<String> sqlFile) throws Exception { Statement stmt = null; stmt = conn.createStatement(); for (String sql : sqlFile) { sql = sql.trim(); if(sql!=null&&!sql.equals("")) stmt.addBatch(sql); } int[] rows = stmt.executeBatch(); System.out.println("Row count:" + Arrays.toString(rows)); conn.close(); } /* * getText方法吧path路径里面的文件按行读数来放入一个大的String里面去 * 并在换行的时候加入\r\n */ public static String getText(String path){ File file = new File(path); if(!file.exists()||file.isDirectory()){ return null; } StringBuilder sb = new StringBuilder(); try{ FileInputStream fis = new FileInputStream(path); InputStreamReader isr = new InputStreamReader(fis,"UTF-8"); BufferedReader br = new BufferedReader(isr); String temp = null; temp = br.readLine(); while(temp!=null){ if(temp.length()>=2){ String str1 = temp.substring(0, 1); String str2 = temp.substring(0, 2); if(str1.equals("#")||str2.equals("--")||str2.equals("/*")||str2.equals("//")){ temp = br.readLine(); continue; } sb.append(temp+"\r\n"); } temp = br.readLine(); } br.close(); }catch(Exception e){ e.printStackTrace(); } return sb.toString(); } /* * getSqlArray方法 * 从文件的sql字符串中分析出能够独立执行的sql语句并返回 */ public static List<String> getSql(String sql){ String s = sql; s = s.replaceAll("\r\n", "\r"); s = s.replaceAll("\r", "\n"); List<String> ret = new ArrayList<String>(); String[] sqlarry = s.split(";"); //用;把所有的语句都分开成一个个单独的句子 sqlarry = filter(sqlarry); ret = Arrays.asList(sqlarry); return ret; } public static String[] filter(String[] ss){ List<String> strs = new ArrayList<String>(); for(String s : ss){ if(s!=null&&!s.equals("")){ strs.add(s); } } String[] result = new String[strs.size()]; for(int i=0; i<strs.size(); i++){ result[i] = strs.get(i).toString(); } return result; }}
0 0
- 使用java以及jdbc不使用第三方库执行sql文件脚本
- Unity读取JSON文件,不使用第三方库
- 如何引用第三方提供的.so库文件以及如何使用javah生成.h文件
- 不使用第三方工具實現Java WebService客戶端簡例
- 第三方dll文件使用
- 使用Python调用Java第三方库
- Java 执行 SQL 脚本文件
- Java 执行 SQL 脚本文件
- Java执行SQL脚本文件
- 不借助第三方工具,查看SQL的执行计划
- android利用多线程加载图片【不使用第三方库】
- iOS推送所有流程(不使用第三方库)
- 第三方库的使用,不引入到项目中
- Android不使用第三方升级库实现应用升级
- 使用第三方JDBC驱动JTDS代替MS SQL Server 2000驱动
- 存储过程使用shell脚本执行sql文件
- oracle使用bat脚本批量执行sql文件
- 使用第三方文件开打文件
- IntelliJ IDEA 与 Gradle + Spring项目的初次尝试
- linux常用命令——3.文件打包压缩
- 软考项目管理师备考的几点建议和思考
- Linux pthread 入门
- 移动端全局css
- 使用java以及jdbc不使用第三方库执行sql文件脚本
- 1,Tomcat在提交表单时后台取不到值的问题,2,springMVC跳转页面地址错误问题
- 【真正福利】成为专业程序员路上用到的各种优秀资料、神器及框架
- 理解React组件的生命周期
- python包的发布
- 条件语句
- JavaAPI操作hbase遇到的java.lang.UnsupportedClassVersionError问题
- 【机器人学】机器人开源项目KDL源码学习:(1)下载源码并在ubuntu下运行geometry部分(旋转矩阵)
- POJ 3657 Haybale Guessing 笔记