public class MySQLHandle {//mysql驱动包名private static final String DRIVER_NAME = "com.mysql.jdbc.Driver";//数据库连接地址private static final String URL = "jdbc:mysql://localhost:3306/test";//用户名private static final String USER_NAME = "root";//密码private static final String PASSWORD = "rootroot";//数据库连接对象private static Connection connection;public static void main(String[] args) {}static {try {//加载mysql的驱动类Class.forName(DRIVER_NAME);} catch (Exception e) {e.printStackTrace();}}//构造函数,包括连接数据库等操作public MySQLHandle(){try {//加载mysql的驱动类Class.forName(DRIVER_NAME);//获取数据库连接connection = DriverManager.getConnection(URL, USER_NAME, PASSWORD);} catch (Exception e) {e.printStackTrace();connection = null;}}//带参数构造函数,用于指定参数连接数据库public MySQLHandle(String Database,String User,String Password){try {//获取数据库连接connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/"+Database, User, Password);} catch (Exception e) {e.printStackTrace();connection = null;}}public Connection getConnection(){return connection;}public static void ReleaseConnect(){if (connection != null) {try {connection.close();} catch (SQLException e) {e.printStackTrace();}}}/*** @方法描述:批量执行SQL语句* @param sql 包含待执行的SQL语句的ArrayList集合* @return int 影响的函数*/public int batchDate(ArrayList<String> sql){try {Statement st = connection.createStatement();for(String subsql :sql){st.addBatch(subsql);}st.executeBatch();return 1;}catch (Exception e) {e.printStackTrace();return 0;}}/*** 以行为单位读取文件,并将文件的每一行格式化到ArrayList中,常用于读面向行的格式化文件*/private static ArrayList<String> readFileByLines(String filePath) throws Exception {ArrayList<String> listStr=new ArrayList<>();StringBuffer sb=new StringBuffer();BufferedReader reader = null;try {reader = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "UTF-8"));String tempString = null;int flag=0;// 一次读入一行,直到读入null为文件结束while ((tempString = reader.readLine()) != null) {// 显示行号// System.out.println("line " + line + ": " + tempString);if(tempString.trim().equals(""))continue;if(tempString.substring(tempString.length()-1).equals(";")){if(flag==1){sb.append(tempString);listStr.add(sb.toString());sb.delete(0,sb.length());flag=0;}elselistStr.add(tempString);}else{flag=1;sb.append(tempString);}}reader.close();} catch (IOException e) {e.printStackTrace();throw e;} finally {if (reader != null) {try {reader.close();} catch (IOException e1) {}}}return listStr;}/*** 读取文件内容到SQL中执行* @param sqlPath SQL文件的路径:如:D:/TestProject/web/sql/脚本.Sql*/public void runSqlByReadFileContent(String sqlPath){try {ArrayList<String> sqlStr = readFileByLines(sqlPath);if (sqlStr.size() > 0) {int num=batchDate(sqlStr);if(num>0)System.out.println("执行成功");elseSystem.out.println("未有执行的SQL语句");}else{System.out.println("没有需要执行的SQL语句");}} catch (Exception e) {e.printStackTrace();}}
}

对sql文件进行读取并通过JDBC批量执行相关推荐

  1. jdbc 批量执行sql

    最近有个需求是需要在java 后端执行导入,数据量比较大, 需要对数据进行很多操作,最后要执行插入数据操作, 一开始先组织好插入数据的sql语句放在数组中,使用的是 jdbcTemplate.batc ...

  2. 从sql文件中读取sql语句执行后报语法错误问题的解决办法

    一般的sql文件保存时都为UTF-8编码,默认(如果sql文件中有中文字符)会有一个BOM头,读取并执行的时候会报syntax error语法错误(这个错误搞了好几天,郁闷),这个时候需要将sql文件 ...

  3. 金蝶ais账套文件数据库读取小工具,批量引出数据

    金蝶AIS账套数据引出超级工具,免费小工具. 无需用户密码,无需安装金蝶,无需手工打开数据库,直接从账套文件读取科目表.核算项目表.记账凭证. 财务人不可错过的工具. 注意:可能会被360卫士.微软杀 ...

  4. Android读取sql文件并导入数据库

    sql文件一般不应该由Android直接执行的,正常应该是先转成db文件直接放入Android中,Android只需执行一些简单sql命令. 但有时有这样的需求怎么办呢,比如你数据库是上个版本放进的, ...

  5. sh执行文件 参数传递_sh 脚本执行sql文件传参数

    一.前言 今天做数据删除,用的命令行输入参数,并且调用执行的sql文件,我采用了sed命令,进行替换. sh脚本如下 #! /bin/sh echo "Please enter the ba ...

  6. 从属性资源文件中读取连接数据库信息

    从属性资源文件中读取连接数据库信息 jdbc.properties 属性配置文件 driver=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:330 ...

  7. python数据库操作批量sql执行_利用Python如何批量修改数据库执行Sql文件

    利用Python如何批量修改数据库执行Sql文件 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  利用Python如何批量修改数据库执行Sql文件.txt ] (友 ...

  8. java scriptrunner,java使用ScriptRunner执行sql文件

    /** * 使用ScriptRunner执行sql文件 */ public class ExecuteSql { private static final Logger LOGGER = Logger ...

  9. java执行sql文件

    方式一:直接读取SQL脚本文件的内容,然后传递到SQL中. 代码:RunSqlService: @Autowiredprivate RunSqlDao runSqlDao;/*** 读取文件内容到SQ ...

  10. Metasploit从文件中读取目标地址

    本文简单介绍如何使用Metasploit从文件中读取目标地址,来执行检测. 以检测MS17-010漏洞为例,在设定RHOSTS参数时,可设定目标地址范围和CIDR地址块,设定单个IP的目标也是可以的. ...

最新文章

  1. java b kb mb gb 转换_java 上传文件大小转换为 GB/MB/KB/B
  2. puppet集群之 Nginx and Passenger
  3. 几行简单代码实现DIV层上显示Tooltip效果
  4. 【算法21】从1到n的正数中1的出现次数
  5. 通过粘性仙人掌基元进行延迟加载和缓存
  6. 使用了css3动画的元素z-index失效解决办法
  7. 遍历josn的三种方式
  8. 11462 - Age Sort
  9. js 自定义DOM事件
  10. ArcView 9.3 安装帮助指南(针对Student Edition-One-Year版本)
  11. 从NASA获取全球气象数据
  12. 使用js获取移动端设备屏幕高度和宽度尺寸的方法
  13. linux执行jar的两种方式
  14. 2020年四川省大型舞台艺术创作申报材料流程及申请奖励补助
  15. token失效 判断access_微信怎么判断微信accesstoken是否过期
  16. 大数据开发的26个专业术语
  17. 上课案列-翻牌游戏(重置、历史记录)
  18. 前端学习——VUE组件基础
  19. Linux tar命令详解
  20. 跟着瑜伽老师一节课程序员锻炼身体

热门文章

  1. POI 实现Word替换书签
  2. hadoop三大组件
  3. linux 统计代码行数,shell 命令统计代码行数的简单代码
  4. 华为虚拟机eNSP命令大全
  5. ensp动态路由ospf基础配置
  6. 【Excel_007】利用excel进行线性规划求解
  7. C语言中除法怎么取得小数
  8. 如何通过C#开发调用Skyline软件中提供的小工具
  9. Microsoft Visual Studio .NET 2003 编译xvidcore-1.1.3
  10. Ubuntu中配置jdk环境变量