`
chensl
  • 浏览: 57924 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 执行sql脚本的3种方式 (ant,ibatis,ScriptRunner) (转)

 
阅读更多

 

java执行sql文件这个问题麻烦的地方在于解析sql脚本文件。所幸的是ant与 ibatis提供了这种实现。




package com.unmi;   
import java.io.*;   
import org.apache.tools.ant.*;   
import org.apache.tools.ant.taskdefs.*;   
import org.apache.tools.ant.types.*;  
/**  
* 调用 ant.jar 的 SQLExec 执行 SQL 脚本文件  
* @author Unmi  
*/  
public class AntExecSql {  
/**  
* @param args  
*/  
public static void main(String[] args) {   
SQLExec sqlExec = new SQLExec();   
//设置数据库参数   
sqlExec.setDriver("oracle.jdbc.driver.OracleDriver");   
sqlExec.setUrl("jdbc:oracle:thin:@10.128.x.x:1521:xxsid");  
sqlExec.setUserid("xxuser");   
sqlExec.setPassword("xxpass");   
//要执行的脚本   
sqlExec.setSrc(new File("src/data.sql"));  
//有出错的语句该如何处理   
sqlExec.setOnerror((SQLExec.OnError)(EnumeratedAttribute.getInstance(   
SQLExec.OnError.class, "abort")));  
sqlExec.setPrint(true); //设置是否输出  
//输出到文件 sql.out 中;不设置该属性,默认输出到控制台   
sqlExec.setOutput(new File("src/sql.out"));   
sqlExec.setProject(new Project()); // 要指定这个属性,不然会出错   
sqlExec.execute();   
}   
}  
package com.unmi;
import java.io.*;
import org.apache.tools.ant.*;
import org.apache.tools.ant.taskdefs.*;
import org.apache.tools.ant.types.*;
/**
* 调用 ant.jar 的 SQLExec 执行 SQL 脚本文件
* @author Unmi
*/
public class AntExecSql {
/**
* @param args
*/
public static void main(String[] args) {
SQLExec sqlExec = new SQLExec();
//设置数据库参数
sqlExec.setDriver("oracle.jdbc.driver.OracleDriver");
sqlExec.setUrl("jdbc:oracle:thin:@10.128.x.x:1521:xxsid");
sqlExec.setUserid("xxuser");
sqlExec.setPassword("xxpass");
//要执行的脚本
sqlExec.setSrc(new File("src/data.sql"));
//有出错的语句该如何处理
sqlExec.setOnerror((SQLExec.OnError)(EnumeratedAttribute.getInstance(
SQLExec.OnError.class, "abort")));
sqlExec.setPrint(true); //设置是否输出
//输出到文件 sql.out 中;不设置该属性,默认输出到控制台
sqlExec.setOutput(new File("src/sql.out"));
sqlExec.setProject(new Project()); // 要指定这个属性,不然会出错
sqlExec.execute();
}
}
ibatis:
package com.ibatis.jpetstore.test;
import java.sql.DriverManager;
import java.util.Properties;
import com.ibatis.common.jdbc.ScriptRunner;
import com.ibatis.common.resources.Resources;
import com.mysql.jdbc.Connection;
public class DBTestSQL {
 
 public static void main(String[] args) {
  
  try {
   Properties props = Resources.getResourceAsProperties("properties/database.properties");
   String url = props.getProperty("url");
   String driver = props.getProperty("driver");
   String username = props.getProperty("username");
   String password = props.getProperty("password");
   System.out.println(url);
   if(url.equals("jdbc:mysql://localhost:3306/jpetstore1")) {
    Class.forName(driver).newInstance();
    Connection conn = (Connection) DriverManager.getConnection(url, username, password);
    ScriptRunner runner = new ScriptRunner(conn, false, false);
    runner.setErrorLogWriter(null);
    runner.setLogWriter(null);
    runner.runScript(Resources.getResourceAsReader("ddl/mysql/jpetstore-mysql-schema.sql"));
    runner.runScript(Resources.getResourceAsReader("ddl/mysql/jpetstore-mysql-dataload.sql"));
    
   }
   
  } catch (Exception e) {
   e.printStackTrace();
  }
  
 }
} 
ScriptRunner(com.ibatis.common.jdbc.*)用法
ScriptRunner类用于执行SQL语句,例如创建数据库schema,或传入缺省或测试数据库等等。 从下面的例子可以认识到它的易用性:
    例子1:使用现成的数据库连接
   Connection conn=getConnection();//some method to get a Connection
  ScriptRunner runner=new ScriptRunner();
  runner.runScript(conn,Resources.getResourceAsReader("com/some/resource/path/initialize.sql"));
   conn.close();
  例子2:使用新的数据库连接
  ScriptRunner runner=new ScriptRunner("com.some.Driver","jdbc:url://db","login","password");
  runner.runScript(conn,new FileReader("/user/local/db/scripts/initialize-db.sql"));
例子3:使用新创建的数据连接
  Properties props= getProperties();//some properties form somewhere
ScriptRunner runner =new ScriptRunner(props);
runner.runScript(conn,new FileReader("/user/local/db/scripts/initialize-db.sql"));
分享到:
评论

相关推荐

    ibatis安装配置

    这是一个 JAR 文件,包含了 Ibatis 执行 SQL 查询、处理结果集等所有功能所需的类和接口。将其添加到项目的类路径中是配置的第一步。在 MyEclipse 中,可以通过以下步骤进行: 1. 右键点击项目 -> Build Path -> ...

    ibatis-2.3.0.677.jar

    在 iBATIS 2.x 版本中,XML 是主要的配置方式,而在后续的 MyBatis(iBATIS 的后续项目)中,更多地采用了注解和 Java 配置。虽然 iBATIS 已经停止更新,但在很多老项目中仍然被广泛使用,且其设计理念对许多现代 ...

    iBATIS_JPetStore-4.0.5

    1. **ddl**:DDL(Data Definition Language)目录包含了创建数据库表的SQL脚本。这些脚本用于在数据库中初始化JPetStore所需的数据结构。通常,这些脚本会定义表、索引、视图等,并为应用程序提供数据存储的基础。 ...

    struts2+ibatis+spring的小例子

    首先,Struts2是一个基于MVC(Model-View-Controller)设计模式的开源Web应用框架,它提供了一种组织应用程序的方式,使得业务逻辑和表现层能够有效地分离。Struts2的核心功能包括请求分发、动作映射、结果渲染等,...

    pojo+xDoclet生成ibatis映射文件

    这段配置指定了 XDoclet 的执行方式、输出目录以及模板文件的位置。它还会排除某些默认的 Javadoc 标签,并确保每次生成时都覆盖旧文件。 #### XDT 模板文件 最后,需要创建一个 XDT (XDoclet Template) 文件来...

    IBatisDome

    5. **db脚本** - 创建数据库表的SQL脚本。 6. **README.md** - 提供项目介绍、运行指南和其他相关信息的文档。 7. **build.gradle** 或 **build.xml** - 如果使用Gradle或Ant作为构建工具,这里会有对应的配置文件。...

    自整理Java关于基础和框架的面试题

    - SSI(Server Side Includes)是一种简单的模板引擎,用于在服务器端插入文本、脚本等。 ##### SSH整合 - **SSH**:Struts + Spring + Hibernate,一种常用的Java Web开发框架组合。 - 实现了MVC模式,并提供了...

    iuhyiuhkjh908u0980

    3. **编码问题**:在Windows环境下,使用Ant执行包含UTF-8编码的构建脚本时,可能会遇到`Invalid byte 1 of 1-byte UTF-8 sequence`错误,这通常是因为命令行不支持UTF-8编码。解决办法是将构建脚本改为GBK编码,...

    Spring-Reference_zh_CN(Spring中文参考手册)

    12.5.2. iBATIS SQL Maps 1.x 12.5.2.1. 创建SqlMap 12.5.2.2. 使用 SqlMapTemplate 和 SqlMapDaoSupport 12.5.3. iBATIS SQL Maps 2.x 12.5.3.1. 创建SqlMapClient 12.5.3.2. 使用 SqlMapClientTemplate 和 ...

    个人英文简历模板resume

    - **编程语言**:Java、Scala、Groovy、JavaScript、C、C++、C#、Shell脚本、SQL、Perl、Ruby、Pascal、Lisp、IDL、Fortran、M(umps)、DIBOL/DBL - **Java相关技术**: - **Java SE**:包括v1.0至v6版本的多个核心...

Global site tag (gtag.js) - Google Analytics