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"));
相关推荐
这是一个 JAR 文件,包含了 Ibatis 执行 SQL 查询、处理结果集等所有功能所需的类和接口。将其添加到项目的类路径中是配置的第一步。在 MyEclipse 中,可以通过以下步骤进行: 1. 右键点击项目 -> Build Path -> ...
在 iBATIS 2.x 版本中,XML 是主要的配置方式,而在后续的 MyBatis(iBATIS 的后续项目)中,更多地采用了注解和 Java 配置。虽然 iBATIS 已经停止更新,但在很多老项目中仍然被广泛使用,且其设计理念对许多现代 ...
1. **ddl**:DDL(Data Definition Language)目录包含了创建数据库表的SQL脚本。这些脚本用于在数据库中初始化JPetStore所需的数据结构。通常,这些脚本会定义表、索引、视图等,并为应用程序提供数据存储的基础。 ...
首先,Struts2是一个基于MVC(Model-View-Controller)设计模式的开源Web应用框架,它提供了一种组织应用程序的方式,使得业务逻辑和表现层能够有效地分离。Struts2的核心功能包括请求分发、动作映射、结果渲染等,...
这段配置指定了 XDoclet 的执行方式、输出目录以及模板文件的位置。它还会排除某些默认的 Javadoc 标签,并确保每次生成时都覆盖旧文件。 #### XDT 模板文件 最后,需要创建一个 XDT (XDoclet Template) 文件来...
5. **db脚本** - 创建数据库表的SQL脚本。 6. **README.md** - 提供项目介绍、运行指南和其他相关信息的文档。 7. **build.gradle** 或 **build.xml** - 如果使用Gradle或Ant作为构建工具,这里会有对应的配置文件。...
- SSI(Server Side Includes)是一种简单的模板引擎,用于在服务器端插入文本、脚本等。 ##### SSH整合 - **SSH**:Struts + Spring + Hibernate,一种常用的Java Web开发框架组合。 - 实现了MVC模式,并提供了...
3. **编码问题**:在Windows环境下,使用Ant执行包含UTF-8编码的构建脚本时,可能会遇到`Invalid byte 1 of 1-byte UTF-8 sequence`错误,这通常是因为命令行不支持UTF-8编码。解决办法是将构建脚本改为GBK编码,...
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 和 ...
- **编程语言**: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版本的多个核心...