Java和Firebird Embedded如何创建db?

时间:2011-11-02 14:32:34

标签: java firebird

现在我得到java.sql.SQLException:没有为jdbc找到合适的驱动程序:firebirdsql:embedded:f / test.fdb

我在项目中加入了jaybird jar。请帮帮我 package util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import org.firebirdsql.gds.impl.GDSType;
import org.firebirdsql.management.FBManager;

public class FireBirdCreator {

    public FireBirdCreator() {
        FBManager manager = new FBManager(GDSType.getType("EMBEDDED"));

        try {
            manager.start();
            manager.createDatabase("f:/test.fdb", "sysdba", "masterkey");
            manager.stop();
        Connection bd = DriverManager.getConnection("jdbc:firebirdsql:embedded:f/test.fdb");
        Statement st = bd.createStatement();
        st.execute("create table if not exists 'TABLE1' ('name1' int, 'name2' text, 'name3' text);");
        st.execute("insert into 'TABLE1' ('name1', 'name2', 'name3') values (1, 'name1', 'name2'); ");
        st.execute("insert into 'TABLE1' ('name1', 'name2', 'name3') values (2, 'name3', 'name4'); ");
        st.execute("insert into 'TABLE1' ('name1', 'name2', 'name3') values (3, 'name5', 'name6');");
        ResultSet rs = st.executeQuery("select * from TABLE1");
        while (rs.next())
            {
                System.out.print  (rs.getString(1)+" ");
                System.out.print  (rs.getString(2)+" ");
                System.out.println(rs.getString(3));
            }
        } catch (Exception e) {
            System.out.println(e);
        }
    }

    public static void main(String args[]) {
        FireBirdCreator fbc = new FireBirdCreator();
    }
}

1 个答案:

答案 0 :(得分:3)

错误消息表明该文件不存在。显示“null”而不是实际文件名的事实可能是嵌入版本和Jaybird版本之间的不匹配。

要创建数据库,您需要使用以下代码(并以正确的方式处理它抛出的异常):

FBManager manager = new FBManager(GDSType.getType("EMBEDDED"));
manager.start();
manager.createDatabase("database.fdb", "", "");
manager.stop();

另请注意,用于创建表的DDL无效Firebird SQL。您需要使用RECREATE TABLE,而Firebird没有名为text的类型。

完全披露:我是Jaybird(Firebird JDBC驱动程序)的开发人员之一。