如何运行sql脚本以从java代码更新Derby模式?

如何运行sql脚本以从java代码更新Derby模式?,java,derby,Java,Derby,客户端的derby数据库安装有不同的模式版本。例如,Customer1的db模式版本为4.1.5.0240,Customer2的版本为4.0.1.0330 其想法是在安装新软件时将这些模式更新为实际版本。为了将版本更新到下一个级别,存在多个sql脚本。例如,将_4.1.5.0240_更新为_4.3.1.0020.sql 我正在寻找的工具/过程应该从derby数据库表中读取实际安装的版本。根据该版本,应运行适当的sql脚本,以便将模式更新到下一级别。必须重复此过程,直到找不到与实际读取版本匹配的s

客户端的derby数据库安装有不同的模式版本。例如,Customer1的db模式版本为4.1.5.0240,Customer2的版本为4.0.1.0330

其想法是在安装新软件时将这些模式更新为实际版本。为了将版本更新到下一个级别,存在多个sql脚本。例如,将_4.1.5.0240_更新为_4.3.1.0020.sql

我正在寻找的工具/过程应该从derby数据库表中读取实际安装的版本。根据该版本,应运行适当的sql脚本,以便将模式更新到下一级别。必须重复此过程,直到找不到与实际读取版本匹配的sql脚本

在客户现场的安装应在没有任何管理员帮助的情况下进行

1.)我更喜欢使用JDBC读取版本的java程序。但是如何从java内部运行sql脚本呢?我应该从java调用ij命令行工具吗

2)是否有更好的替代方案

谢谢
Viktor

您可能会发现ij.runScript方法很有用:


需要注意的一点是,在脚本中自动执行错误处理并不容易,因为ij脚本中没有控制流(if/then/else)构造。但是,如果您只需要以干净的方式执行一系列DDL操作,ij.runScript是一种非常好的技术。

您可能会发现ij.runScript方法非常有用:


需要注意的一点是,在脚本中自动执行错误处理并不容易,因为ij脚本中没有控制流(if/then/else)构造。但是,如果您只需要以干净的方式执行一系列DDL操作,ij.runScript是一种非常好的技术。

您可以将SQL存储在文本文件中:

从java代码中读入SQL以更新/插入数据到各个表中:

您的java代码还可以对“要运行的SQL更新文件”执行检查

沿着这些线的东西(在非常伪的代码中)

Installed=getCurrentInstalledVersion()//当前版本的管理表中存储的信息
如果(已安装
我让你去弄清楚更详细的细节。如果你已经找到了解决方案,为什么不在这里发布呢


如果您使用交换机,您可以在需要时通过其他版本运行更新到新版本,方法是按正确的顺序放置版本,并在任何中断之前插入代码

您可以将SQL存储在文本文件中:

从java代码中读入SQL以更新/插入数据到各个表中:

您的java代码还可以对“要运行的SQL更新文件”执行检查

沿着这些线的东西(在非常伪的代码中)

Installed=getCurrentInstalledVersion()//当前版本的管理表中存储的信息
如果(已安装
我让你去弄清楚更详细的细节。如果你已经找到了解决方案,为什么不在这里发布呢

如果您使用交换机,您可以在需要时通过其他版本运行更新到新版本,方法是按正确的顺序放置版本,并在任何中断之前插入代码

Installed = getCurrentInstalledVersion();//info stored in an admin table for current version

if (Installed < V4.1){//This would probably work better as a switch
String sql = updateWith(URL file:\\PathTov4.1\sql.txt);
}
else{
     if(Installed = OtherVersions){
      String sql = UpdateWith(URL file:\\PathToOtherVersion\sql.txt);
      }
}

Connect.sendSQL(sql);//send the sql to the DB