当前位置: 首页 > news >正文

java jdbc执行Oracle sql文件

执行代码


import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.sql.Connection;
import java.sql.DriverManager;import org.apache.ibatis.jdbc.ScriptRunner;public class ExecSqlFileController {public static void execSqlFileByMysql(String sqlFilePath) throws Exception {// Oracle数据库的JDBC URL,用户名和密码String url = "jdbc:oracle:thin:@xxx.xxxx.xxx.xxx:15211:orclgbk";String username = "xxxx";String password = "xxxx";Exception error = null;Connection conn = null;try {// 加载Oracle JDBC驱动程序Class.forName("oracle.jdbc.driver.OracleDriver");// 建立连接conn = DriverManager.getConnection(url, username, password);//          设置不自动提交conn.setAutoCommit(false);ScriptRunner runner = new ScriptRunner(conn);
//          设置不自动提交runner.setAutoCommit(false);/** setStopOnError参数作用:遇见错误是否停止;* (1)false,遇见错误不会停止,会继续执行,会打印异常信息,并不会抛出异常,当前方法无法捕捉异常无法进行回滚操作,无法保证在一个事务内执行;* (2)true,遇见错误会停止执行,打印并抛出异常,捕捉异常,并进行回滚,保证在一个事务内执行;*/runner.setStopOnError(true);/** 按照那种方式执行* 方式一:true则获取整个脚本并执行;* 方式二:false则按照自定义的分隔符每行执行;*/runner.setSendFullScript(false);//          定义命令间的分隔符runner.setDelimiter(";");runner.setFullLineDelimiter(false);//          设置是否输出日志,null不输出日志,不设置自动将日志输出到控制台runner.setLogWriter(null);//          如果又多个sql文件,可以写多个runner.runScript(xxx),runner.runScript(new InputStreamReader(new FileInputStream(sqlFilePath), StandardCharsets.UTF_8));conn.commit();} catch (Exception e) {assert conn != null;conn.rollback();error = e;} finally {close(conn);}if (error != null) {throw error;}}private static void close(Connection conn) {try {if (conn != null) {conn.close();}} catch (Exception e) {if (conn != null) {conn = null;}}}public static void main(String[] args) {try {execSqlFileByMysql("C:\\Users\\zhou\\Desktop\\test.sql");} catch (Exception e) {e.printStackTrace();}}
}
http://www.xdnf.cn/news/581473.html

相关文章:

  • 鸿蒙 HarmonyOS NEXT 系统 Preference 首选项使用全解析
  • Antd中Upload组件封装及使用:
  • 【Redis】三、在springboot中应用redis
  • python实现web请求与回复
  • 水库大坝、坝肩混凝土面板变形及岸坡位移多断面多测点安全监测新途径——变焦视觉位移监测仪
  • 在线时间戳(Unix TimeStamp)转换器
  • 739. 每日温度
  • 单片机如何快速实现查看实时数据
  • [Git] 基本操作及用户配置
  • CSR矩阵 矩阵压缩
  • 深入探究C++11的核心特性
  • [Harmony]网络请求
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Live View Kit (3)
  • HarmonyOS NEXT~React Native 在鸿蒙系统上的应用与实践
  • 企业网站架构部署与优化第4章Nginx核心功能
  • Axios中POST、PUT、PATCH用法区别
  • 服务器硬盘分类
  • 小白的进阶之路系列之三----人工智能从初步到精通pytorch计算机视觉详解下
  • C# 使用 Source Generation 提升 System.Text.Json 性能
  • 职坐标嵌入式MCU/DSP与RTOS开发精讲
  • Android logcat命令汇总
  • Elasticsearch 写入性能优化有哪些常见手段?
  • c++11特性——lambda对象、包装器
  • Strands Agents:AWS开源Agent框架的技术与应用全景
  • MySQL 索引失效及其解决办法
  • 全面学习c++类与对象(中)(非常重要)(析构构造拷贝函数赋值运算符重载等等)
  • 养生攻略:五步打造健康生活
  • Three.js搭建小米SU7三维汽车实战(1)搭建开发环境
  • 腾讯云媒体AI解码全球视频出海智能密码
  • 替代云数据库的本地方案:MySQL+phpMyAdmin的远程管理与跨网络访问技术