标签: jaybird

在Grails中使用Firebird数据库的步骤

我正在尝试将Grails应用程序连接到Firebird数据库.

我在用:

  • Grails 2.2.1
  • JDK 1.7
  • Firebird 2.5.2
  • Jaybird 2.2.2

到目前为止,这就是我所做的:

  • 我从http://www.firebirdsql.org/en/jdbc-driver/下载了Jaybird-2.2.2JDK_1.7.zip
  • 我解压缩此文件并将jaybird-2.2.2.jar复制到我的应用程序的lib文件夹中.
  • 在BuildConfig.groovy中,我添加runtime "org.firebirdsql.jdbc:jaybird:2.2.2"到依赖项部分.
  • 我编辑了DataSource.groovy,详情如下.

dataSource部分:

dataSource {
    pooled = false
    driverClassName = "org.firebirdsql.jdbc.FBDriver"
    dialect = "org.hibernate.dialect.FirebirdDialect"
    username = "SYSDBA"
    password = "masterkey"
}
Run Code Online (Sandbox Code Playgroud)

休眠部分:

hibernate {
    cache.use_second_level_cache = true
    cache.use_query_cache = true
    cache.provider_class = 'org.firebirdsql.pool.FBSimpleDataSource'
}
Run Code Online (Sandbox Code Playgroud)

(我也有cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactorycache.provider_class = 'com.opensymphony.oscache.hibernate.OSCacheProvider'在分开的场合上面的部分,但也作出的任何差异).

运行我的Grails应用程序时,启动失败并出现一个巨大的错误,归结为以下消息:

java.lang.IllegalStateException: Could not load JDBC driver class [org.firebirdsql.jdbc.FBDriver]
Run Code Online (Sandbox Code Playgroud)

我已经远程搜索了网络,但我无法在任何地方找到有效的Grails/Firebird配置示例.有一个修复浮动,涉及复制minij2ee.jar,但这是一个不同的错误消息.此外,人们建议清空.grails文件夹 - 我试过这个,但无济于事.

有人可以建议,我怎样才能让Grails与Firebird合作?


这是完整的例外,虽然在启动期间似乎重复了几次:

->> 303 | innerRun in …
Run Code Online (Sandbox Code Playgroud)

grails firebird hibernate jdbc jaybird

4
推荐指数
1
解决办法
2635
查看次数

将ResultSet光标移回Firebird

我正在使用Firebird。我知道在Firebird中我们无法将结果集光标移回。仅TYPE_FORWARD_ONLYTYPE_SCROLL_INSENSITIVE不支持时支持。在我的应用程序中,我想像这样使用,将结果集光标移回第一行resultSet.previous()。我想知道是否可以通过任何方式将光标移回。

查看Firebird的以下文档:

JDBC 3.0规范定义了三种类型的结果集

  • TYPE_FORWARD_ONLY:结果集不可滚动,光标只能向前移动。使用TRANSACTION_READ_COMMITTED隔离级别时,结果集将返回ResultSet.next()调用时满足搜索条件的所有行。在其他情况下,结果集将仅返回在事务开始时可见的行。
  • TYPE_SCROLL_INSENSITIVE:结果集是可滚动的,光标可以前后移动,可以定位在指定的行上。只有满足查询执行条件的行才可见。
  • TYPE_SCROLL_SENSITIVE:Firebird和Jaybird不支持。驱动程序允许应用程序请求这种类型的结果集,但是根据JDBC规范,该类型被“降级”为先前的类型,并且相应的警告被添加到连接对象。

由于Firebird中缺少对可滚动游标的支持,因此通过将完整的结果集提取到客户端来实现对它们的支持(TYPE_SCROLL_INSENSITIVE结果集类型)。滚动发生在客户端的内存中。当结果集很大时,这可能会对系统内存使用和性能产生不利影响。

我认为这只是一段代码会有所帮助:

while (res.next()) {
    if (!id.equalsIgnoreCase(res.getString("NO_TRANSFERT"))) {
        res.previous();
        break;
    }
    xml = xml + "<" + tableName + ">\n";
    for (int i = 1; i <= count; i++) {
        String columnName = rsmd.getColumnName(i);
        xml = xml + "<" + columnName + ">" + res.getString(i) + "</"
            + columnName + ">\n";
    }
    xml = xml + "</" + tableName + ">\n\n";
} …
Run Code Online (Sandbox Code Playgroud)

java firebird jdbc resultset jaybird

3
推荐指数
1
解决办法
1029
查看次数

Firebird数据库是否支持Schema?如果是这样,我如何通过ISQL在Firebird DB中创建架构?

Firebird数据库是否支持Schema?如果是这样,我如何通过ISQL在Firebird DB中创建架构?请帮我在Firebird DB中创建模式.我试图使用检索模式

AbstractDatabaseMetaData.getSchemas()
Run Code Online (Sandbox Code Playgroud)

但它始终检索空结果集.任何人都可以帮我检索模式吗?没有架构时至少是SYSTEM架构.

sql schema firebird jaybird

3
推荐指数
1
解决办法
2714
查看次数

如何使用 R 传递字符集和 Firebird 的角色

我正在尝试使用 R 语言在 Firebird 中执行选择。我知道Firebird需要一个字符集和角色参数,但我不知道如何在R语言中传递它。默认消息不告知字符集

   WARNING: No connection character set specified (property lc_ctype, encoding, charSet or localEncoding), defaulting to character set NONE
Run Code Online (Sandbox Code Playgroud)

database connection firebird r jaybird

3
推荐指数
1
解决办法
1315
查看次数

spring hibernate java.sql.SQLException:结果集已关闭

我在使用 Spring 应用程序并使用 DTO 从数据库获取数据时遇到问题。我收到“java.sql.SQLException:结果集已关闭”。数据库是Firebird(Jaybird 版本3.0.3)。

我的 dto 文件:

package ekoncept.dto;

import ...

public class FakturaListDTO {

    private Integer fakturaId;

    @Getter @Setter private String fakturaPrefix;
    ...
    @Getter @Setter private BigDecimal fakturaZaplacono;

    @Id
    @Column(name = "FAKTURA_ID")
    public Integer getFakturaId() {
        return fakturaId;
    }

    public void setFakturaId(Integer fakturaId) {
        this.fakturaId = fakturaId;
    }

    public FakturaListDTO(Faktura fakt) {          // not working
        this.fakturaId = fakt.getFakturaId();
        this.fakturaPrefix = fakt.getFakturaPrefix();
        ...
        this.fakturaZaplacono = fakt.getFakturaZaplacono();
    }

    public FakturaListDTO(Integer faktId) {  // working
        this.fakturaId = faktId;
    }
} …
Run Code Online (Sandbox Code Playgroud)

java firebird spring hibernate jaybird

3
推荐指数
1
解决办法
6031
查看次数

sql数据库中的日期时间结果在clojure jdbc中不相同

我在使用jdbc的数据库(firebird)中的时间戳有问题

数据库中的数据

timestamp 1994-10-12T00:00:00.000000000-00:00
Run Code Online (Sandbox Code Playgroud)

我用python测试,结果在数据库中是相同的,但是当我使用jdbc(clojure)时

result is 1994-10-11T17:00:00.000000000-00:00
Run Code Online (Sandbox Code Playgroud)

我认为这取决于时区(我在GMT + 7)

如何解决?

谢谢。

此代码

(ns test.core
  (:require [clojure.java.jdbc :as jdbc]))

        (def firebird-setting {:description "Firebird Database"
                           :classname   "org.firebirdsql.jdbc.FBDriver"
                           :subprotocol "firebirdsql"
                           :subname     "//localhost:3051//firebird/data/test.fdb"
                           :user        "user"
                           :password    "pass"})

    (jdbc/query firebird-setting
                "select ts from TestTB")
Run Code Online (Sandbox Code Playgroud)

和结果

({:ts #inst "1994-10-11T17:00:00.000000000-00:00"})
Run Code Online (Sandbox Code Playgroud)

firebird jdbc clojure jaybird

3
推荐指数
1
解决办法
276
查看次数

在使用 FBManager 创建的数据库上设置默认字符集

我已经使用 jaybirds 的 class 创建了一个数据库FBManager,但我找不到default charset为其指定 a 的方法(默认为NONE)。

我错过了什么吗?是否可以在创建数据库后定义它?

这是用于创建它的片段

FBManager fbm = new FBManager();
fbm.start();
fbm.createDatabase("./fb.fdb", "user", "password");
fbm.stop();
Run Code Online (Sandbox Code Playgroud)

此功能现已在 Jaybird 版本 3.0.6 及更高版本中提供。有关更多详细信息,请参阅已接受的答案。

java firebird jaybird

3
推荐指数
1
解决办法
737
查看次数

意外的 GDS 异常:335544726。从连接读取数据时出错

我有一个在 Apache Tomcat 6 上运行的 Web 应用程序,使用 ZK、Hibernate 和 Jaybird JDBC 来访问 Firebird 数据库。由于某些未知原因,在执行动态 SQL 的应用程序中执行尚未映射的操作后,它崩溃并出现以下异常:

错误:org.springframework.transaction.TransactionSystemException:无法回滚 JPA 事务;嵌套异常是 javax.persistence.PersistenceException:回滚时出现意外错误 javax.persistence.PersistenceException:回滚时出现意外错误 org.hibernate.TransactionException:JDBC 回滚失败 [SQL:335544726,HY000] org.firebirdsql.jdbc.FBSQLException:GDS 异常。335544726。从连接读取数据时出错。

原因:从连接读取数据时出错。...

那么,此后用户执行的任何操作都会导致以下错误:

错误:javax.persistence.PersistenceException:org.hibernate.exception.GenericJDBCException:无法执行查询org.hibernate.exception.GenericJDBCException:无法执行查询[SQL:335544721,HY000] org.firebirdsql.jdbc.FBSQLException:GDS异常。335544721. 无法完成对主机“”的网络请求。原因:无法完成对主机“”的网络请求。

系统崩溃了,就像失去了与数据库的连接一样。

以前有人经历过吗?

java firebird hibernate jdbc jaybird

1
推荐指数
1
解决办法
8072
查看次数

春天+火鸟

有人成功将 spring 连接到 .gdb 数据库或 .fdb 数据库吗?我需要很少的帮助来执行一些查询并将其显示在屏幕上。互联网上几乎没有关于将 spring 与 firebird 连接的信息......

谢谢

firebird spring jaybird

1
推荐指数
1
解决办法
5564
查看次数

插入或更新查询执行成功但数据不持久

我正在尝试使用 JDBC 在现有 Firebird 数据库中插入或更新元素。我使用默认凭据( SYSDBAmasterkey )访问数据库。

根据 JDBC,请求已成功完成,但数据库未修改(当我执行选择时,的数据未出现)。我还尝试使用 RazorSQL 等软件修改数据库内容,结果是相同的(数据库在会话期间被修改,但如果我断开连接并重新连接到数据库,我的修改就会丢失)。

有人知道如何解决这个问题吗?

sql firebird jdbc jaybird

0
推荐指数
1
解决办法
1274
查看次数

Jaybird java.lang.NoClassDefFoundError

可能我会问一个常见的问题,但是当我尝试通过Jaybird与Firebird DB连接时,我真的不知道我做错了什么以及我能忘记什么.我已将Jaybird.jar添加到我的Java构建路径中,但仍然收到错误 java.lang.NoClassDefFoundError.

这是我的简单代码:

public class DBHelper {


    public void tryConnect() {
       try {
           Class.forName("org.firebirdsql.jdbc.FBDriver");
       } catch (ClassNotFoundException cnfe) {
           System.out.println(cnfe.toString());
           System.out.println("org.firebirdsql.jdbc.FBDriver not found");
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

java firebird jdbc jaybird

0
推荐指数
1
解决办法
2319
查看次数

标签 统计

firebird ×11

jaybird ×11

jdbc ×6

java ×5

hibernate ×3

spring ×2

sql ×2

clojure ×1

connection ×1

database ×1

grails ×1

r ×1

resultset ×1

schema ×1