Java 将生成器设置为特定值

Java 将生成器设置为特定值,java,jdbc,firebird,Java,Jdbc,Firebird,我正在转换一个数据库,在生成新的数字之前,我需要将生成器设置为一个值 假设发电机名为gtest。我尝试了以下方法: PreparedStatement nrps = csource.prepareStatement("alter sequence gtest restart with 100"); 及 选项1给出了无效的语法,选项2给出了未知的系统变量 我做错了什么?我开始怀疑您正在使用与非firebird数据库的连接,因为没有firebird错误消息“未知系统变量”(这是一个MySQL错误)

我正在转换一个数据库,在生成新的数字之前,我需要将生成器设置为一个值

假设发电机名为gtest。我尝试了以下方法:

PreparedStatement nrps = csource.prepareStatement("alter sequence gtest restart with 100");

选项1给出了无效的语法,选项2给出了未知的系统变量


我做错了什么?

我开始怀疑您正在使用与非firebird数据库的连接,因为没有firebird错误消息“未知系统变量”(这是一个MySQL错误)

我已经在Firebird 2.5和两者上使用Jaybird 2.2.4对其进行了测试,并且工作正常

我使用了以下示例程序:

private static final String fileName = "D:/data/db/alterseq.fdb";

public static void main(String[] args) throws Exception {
    FBManager manager = new FBManager();
    manager.setCreateOnStart(true);
    manager.setDropOnStop(true);
    manager.setUserName("sysdba");
    manager.setPassword("masterkey");
    manager.setFileName(fileName);
    manager.start();
    try (Connection con = DriverManager.getConnection(
            "jdbc:firebirdsql://localhost/" + fileName, "sysdba", "masterkey")) {
        try (Statement ddlStmt = con.createStatement()) {
            ddlStmt.execute("CREATE SEQUENCE seq_test");
        }
        try (PreparedStatement pstmt = con.prepareStatement(
                "ALTER SEQUENCE seq_test RESTART WITH 100")) {
            pstmt.execute();
        }
        try (PreparedStatement pstmt = con.prepareStatement(
                "SET GENERATOR seq_test TO 200")) {
            pstmt.execute();
        }
    } finally {
        manager.stop();
    }
}

您使用哪个Firebird版本?
ALTER SEQUENCE
已添加到Firebird 2.0中。还要注意,您的第二条语句应该是
将GENERATOR gopdracht设置为100
(注意添加了
GENERATOR
)。请看,我已经相应地更改了它,但它仍然给了我未知的系统变量“generator”。我正在使用Firebird 2.1和Jaybird 2.1作为驱动程序。数据库是ODS 11.1还是旧的ODS版本?Firebird的某些功能只有在数据库升级(通过备份和还原)后才起作用ODS 11.2就是这个版本。如果它是ODS 11.2,那么你使用的是Firebird 2.5,而不是2.1。你的评论完全正确。我不小心让我的ctarget连接到了我的源数据库,它是MySql。问题解决了!感谢你的广泛帮助。Bedankt。
private static final String fileName = "D:/data/db/alterseq.fdb";

public static void main(String[] args) throws Exception {
    FBManager manager = new FBManager();
    manager.setCreateOnStart(true);
    manager.setDropOnStop(true);
    manager.setUserName("sysdba");
    manager.setPassword("masterkey");
    manager.setFileName(fileName);
    manager.start();
    try (Connection con = DriverManager.getConnection(
            "jdbc:firebirdsql://localhost/" + fileName, "sysdba", "masterkey")) {
        try (Statement ddlStmt = con.createStatement()) {
            ddlStmt.execute("CREATE SEQUENCE seq_test");
        }
        try (PreparedStatement pstmt = con.prepareStatement(
                "ALTER SEQUENCE seq_test RESTART WITH 100")) {
            pstmt.execute();
        }
        try (PreparedStatement pstmt = con.prepareStatement(
                "SET GENERATOR seq_test TO 200")) {
            pstmt.execute();
        }
    } finally {
        manager.stop();
    }
}