以前用的方案是把sql文件放在部署的目录下边,启动的时候写了一个InitData类,该类在系统启动的时候自动加载,在该类中读取sql文件并调用ant的org.apache.tools.ant.taskdefs.SQLExec类执行sql文件,这样就ok了,但是现在不用ant了,换成maven了, maven有类是的工具类吗? 或还有别的其它办法, 注意是sql文件,里边可以是任何的sql语句。。

解决方案 »

  1.   

    比如在web.xml里面定义点启动画面
    然后启动画面里面调用sql
      

  2.   

    定义一个监听器,在里面获得一个连接,直接你的sql文件就行
      

  3.   


    定义启动画面什么意思? 我上面说的InitData类也是在web.xml里面定义的启动时候首先加载的servlet, 我想问的是出来ant的工具类以外还有没有其它的方法来或类来执行sql文件
      

  4.   

    除了ant的工具类以外还有没有其它的方法来或类来执行sql文件的???
      

  5.   

    大哥, 我的意思是sql文件怎么执行。
      

  6.   

    晕啦,你的sql文件里面还不就是些sql嘛,难道还有jdbc或者hibernate的session不能执行的sql吗?
      

  7.   


    文件里面有很多sql语句,我不可能一个个的把这个sql语句从文件中读出来。 org.apache.tools.ant.taskdefs.SQLExec类 就可以直接把整个文件执行了, hibernate可以直接执行整个文件吗?
      

  8.   

    搂主到底是想在打包部署时候执行sql文件,还是想在启动服务时候执行,如果是在启动服务时执行,跟ant有什么关系呢。定义一个启动servlet运行sql文件不久可以了吗
      

  9.   


    是启动的时候执行的。定义一个启动servlet运行sql文件不久可以了吗? 我也知道, 关键是servlet里面怎么能执行一个sql文件呢? 注意不是sql语句,是一个大的sql文件!!!!!!  ant里有一个工具类传入一个文件路径,就可以把整个文件执行了, 还有类是的类吗?  
      

  10.   

    晕, 都是错别字 上面是    还有类似的 工具类吗?  或可以执行一个sql文件的类
      

  11.   

    http://www.blogjava.net/Unmi/archive/2008/01/22/177056.html
      

  12.   

    看了一下, 你这个是自己读取文件,把文件解析成sql语句, 之后再执行这些sql语句要是按照这样都要自己写的话, 还不如用我上面说的ant的那个类, 别人都已经写好了直接执行文件的,干嘛还要造轮子只是我们现在不用ant了,用的是maven管理的项目, 所以不想再引用ant的包了, 所以才想是不是有其他的工具类能解决, 看来估计没有了。。
      

  13.   

    maven里面可以调用系统命令的吧,你直接调用数据库的导入程序直接执行SQL文件吧
      

  14.   

    在web.xml里面就可以定义一个启动项 <servlet>
    <servlet-name>InitServelt</servlet-name>
    <servlet-class>frame.base.InitServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
    /**
     * 在服务启动的时候执行该类进行初始化
     * @author Qiulingdong
     */
    public class InitServlet extends HttpServlet{
    private Logger log = Logger.getLogger(InitServlet.class); public void init() {
    log.info("正在执行初始化......");
    //初始化读取属性文件
    BaseProperties.loadProperties();
    }
    }
    比如这样的意思就是在启动服务的时候加载InitServelt类的方法,load-on-startup是执行的顺序
      

  15.   

    利用spring的如下配置,spring启动的时候就可以执行sql语句了.application.xml内容定义如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd 
    http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd " default-lazy-init="true">

    <jdbc:initialize-database data-source="dataSource" ignore-failures="ALL">
    <jdbc:script location="classpath:init_oracle.sql"/>
    </jdbc:initialize-database></beans>