标签: jaybird

SELECT语句中的列别名不适用于SQuirrel SQL + Firebird

我尝试使用SQuirrel SQL 3.4 + Firebird 1.5 +驱动程序JDBC Jaybird 2.2.[0 | 1](JVM 1.7.0_03)在SELECT语句中添加列别名,但不起作用.列别名显示为列的原始名称.在另一个工具(DBExpert)中,相同的语句可以正常工作.

声明:SELECT column1 AS alias1, column2 FROM table;
合力列名SquirrelSQL:column1 - column2
合力列名DBExpert:alias1 - column2

尝试在别名周围添加'和',但也无法正常工作.

有人有想法吗?

编辑:我将JDBC Jaybird驱动程序更新为2.2.1版本(9月30日发布),问题仍然存在.

编辑2:问题已解决!

问题是由Squirrel SQL的默认首选项引起的.

要解决此问题,请转到"文件" - >"全局首选项",在"数据类型控件"选项卡中找到"常规(适用于所有类型)"并标记组合框"在结果标题中使用列标签而不是列名称".

见截图:http://i1-win.softpedia-static.com/screenshots/SQuirrel-SQL-Client_4.png?1345342622

请享用.

sql firebird jdbc squirrel-sql jaybird

21
推荐指数
2
解决办法
8165
查看次数

与自动重新连接的JDBC连接

我正在使用JDBC连接到数据库服务器.连接是通过无线网络进行的,有时可能很狡猾.在连接丢失的那一刻,我需要关闭并重新启动应用程序.

有没有人有一些代码示例,我可以编写某种包装器来自动重新连接并重新运行最后一个查询?这样可以省去很多麻烦.

我只是不确定它应该如何/可以实施.也许已经有了可用的东西?

java firebird jdbc jaybird

11
推荐指数
2
解决办法
3万
查看次数

Firebird与java的连接

我在Windows XP上安装了Firebird 2.1,并使用firebirdsql.jdbc-2.1.6驱动程序与java连接.码:

Class.forName("org.firebirdsql.jdbc.FBDriver"); 

connection = DriverManager.getConnection(
    "jdbc:firebirdsql://localhost/3050//C:/firebird/database/EMPLOYEE.FDB", 
    "test","test"); 
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Caused by: org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544375.
unavailable database 
Reason: unavailable database at 
org.firebirdsql.jdbc.FBDataSource.getConnection(FBDataSource.java:122) at 
org.firebirdsql.jdbc.FBDriver.connect(FBDriver.java:140) at 
java.sql.DriverManager.getConnection(DriverManager.java:525) at 
java.sql.DriverManager.getConnection(DriverManager.java:171)

请帮忙.

问题解决了:实际上我遇到了jar文件的问题

http://mirrors.ibiblio.org/pub/mirrors/maven2

我从firebird官方网站下载了jaybird-full-2.1.6.jar,问题解决了.

正确的URL是

"jdbc:firebirdsql://localhost:3050/C:\\firebird\\database\\EMPLOYEE.FDB"
Run Code Online (Sandbox Code Playgroud)

我之前也尝试过这个URL,但由于jar问题而无法正常工作.

java firebird firebird2.1 jaybird

10
推荐指数
1
解决办法
2万
查看次数

使用"META-INF/services"进行驱动程序的内部管道

我开发了Jaybird JDBC驱动程序,今天我遇到了一个问题(JDBC-325,如何配置Jaybird与hibernate),这与Jaybird如何加载其组件以及如何 - 在这种情况下 - NetBeans限制类加载有关.

问题与Jaybird使用条目加载部分内容的方式有关META-INF/services,NetBeans为Hibernate向导使用的类加载器显式忽略了这些文件(请参阅下面的详细信息).

我可以通过(也)尝试加载作为Jaybird实现的一部分的硬编码插件列表,或者通过将定义移动到其他位置来解决此问题.

但是我想知道META-INF/services像Jaybird这样用于内部目的是否奇怪(或错误)?

我也不明白为什么NetBeans会排除加载META-INF/servicesDrew的评论似乎表明NetBeans在加载驱动程序时使用它来解决错误(参见本期),尽管我认为用户可以更好地解决这一问题,包括驱动程序的所有依赖关系.

问题的细节

Jaybird使用插件来支持协议,例如Type 4协议,自定义Type 4 Open Office协议,Type 2嵌入式(本机)协议和Type 2本机客户端协议.我还相信第三方曾经使用它来提供将Oracle特定语法转换为Firebird语法的驱动程序.

所有这些插件都列在META-INF/services/org.firebirdsql.gds.impl.GDSFactoryPlugin并以类似于java.util.ServiceLoader(当前2.2.x驱动程序仍然支持Java 5,因此我们实际上不使用ServiceLoader)的方式加载.对于即将推出的版本,我还计划将其用于支持的连接编码和(线路)协议定义.这将允许"自定义"编码定义(例如,扩展支持的编码,或使用备用编码)或不同的协议实现(例如,用于故障排除,自定义日志记录等).

现在实际的问题是Netbeans向导Hibernate Mapping Files和来自Database的POJO使用自定义类加载器(org.netbeans.modules.hibernate.util.CustomClassLoader),而这个类加载器忽略了文件META-INF/services.请注意,只有这个向导有问题,Netbeans本身可以毫无问题地使用驱动程序.

代码忽略META-INF/services:

@Override
public URL findResource(String name) {
    return name.startsWith("META-INF/services") ? null : super.findResource(name); //NOI18N
}

@Override
public Enumeration<URL> findResources(String name) throws IOException {
    if (name.startsWith("META-INF/services")) { //NOI18N …
Run Code Online (Sandbox Code Playgroud)

java netbeans meta-inf jdbc jaybird

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

具有授予权限的firebird用户无法访问表

我通过jaybird创建了一个Firebird用户(PIPPO),跟随gsec"display":

GSEC> di
     user name                    uid   gid admin     full name
------------------------------------------------------------------------------------------------
SYSDBA                              0     0           Sql Server Administrator
PIPPO                               0     0           GesAll 1.0 User
GSEC>

我在Firebird DB中创建了一个角色(GESALLDB_USER)并授予了一些权限:

SQL> show grant;

/* Grant permissions for this database */
GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON ANELLI TO ROLE GESALLDB_USER

GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON COPPIE TO ROLE GESALLDB_USER

GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON COVE TO ROLE GESALLDB_USER
GRANT DELETE, INSERT, SELECT, UPDATE, REFERENCES ON DATI_CONFIGURAZIONE TO ROLE GESALLDB_USER …

database privileges firebird role jaybird

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

Jaybird 2.2.4 NestedTransactionNotSupportedException:JpaDialect不支持保存点

使用@Transactional(value ="erpJPA",propagation = Propagation.NESTED)我有例外

    Caused by: org.springframework.transaction.NestedTransactionNotSupportedException: 
JpaDialect does not support savepoints - check your JPA provider's capabilities
Run Code Online (Sandbox Code Playgroud)

firebird不支持1.5版的嵌套事务吗?

firebird hibernate jpa jaybird

7
推荐指数
0
解决办法
1424
查看次数

无法识别 Spring Data JDBC Firebird 方言

我正在尝试使用 Spring Data JDBC 和 Spring Boot 连接到 Firebird 数据库。我使用 Spring Tools 创建了一个简单的应用程序。Spring Data JDBC 无法识别方言。我认为问题在于DialectResolver它不支持 Firebird。

private static Dialect getDialect(Connection connection) throws SQLException {

    DatabaseMetaData metaData = connection.getMetaData();

    String name = metaData.getDatabaseProductName().toLowerCase(Locale.ENGLISH);

    if (name.contains("hsql")) {
        return HsqlDbDialect.INSTANCE;
    }
    if (name.contains("h2")) {
        return H2Dialect.INSTANCE;
    }
    if (name.contains("mysql")) { // catches also mariadb
        return new MySqlDialect(getIdentifierProcessing(metaData));
    }
    if (name.contains("postgresql")) {
        return PostgresDialect.INSTANCE;
    }
    if (name.contains("microsoft")) {
        return SqlServerDialect.INSTANCE;
    }
    if (name.contains("db2")) {
        return Db2Dialect.INSTANCE;
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

我是 …

firebird spring jaybird spring-boot spring-data-jdbc

6
推荐指数
2
解决办法
8612
查看次数

Firebird 3 sysdba密码令人惊叹的问题

我从firebird 2.5.x迁移到3.0我改变了firebird.conf:

WireCrypt = Enabled
AuthServer = Legacy_Auth, Srp, Win_Sspi
Run Code Online (Sandbox Code Playgroud)

在那之后你就是这样:

我可以使用SYSDBA masterkey从Netbeans IDE连接.我可以使用SYSDBA和其他密码从FlameRobin(数据库管理工具)连接.我无法使用SYSDBA与其他密码从Wild-Fly服务器连接.

我真的很想知道.!!

firebird jaybird wildfly firebird-3.0

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

获取Firebird服务器版本信息

我使用java和jaybird驱动程序.在我之前使用jaybird 2.x的版本中,我使用GDS低级访问(服务API)连接服务器(没有连接db-part),以获取服务器版本字符串.

现在我尝试使用FB3 + jaybird3beta.JB3中没有GDS API.正如我从文档中看到的那样 - 有org.firebirdsql.util.FirebirdSupportInfo对象有3个实现

static FirebirdSupportInfo  supportInfoFor(Connection connection) 
static FirebirdSupportInfo  supportInfoFor(FbDatabase database) 
static FirebirdSupportInfo  supportInfoFor(GDSServerVersion serverVersion) 
Run Code Online (Sandbox Code Playgroud)

我看到了:

  • GDSServerVersion - 表示Firebird服务器版本的对象(已经以某种方式获得).
  • FbDatabase - 数据库的连接句柄.
  • 连接 - 某种"连接".挖铲斗:

还有带有getConnection()函数的java.sql.DriverManager"尝试建立与给定数据库URL的连接"

所以,据我所知,如果没有连接到任何数据库,它无法获得服务器版本?或者我想念什么?

或者我如何才能使用server:port和给定的用户名/密码来获取服务器的版本?

java firebird jaybird

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

Firebird Jaybird 2.2.10 / ColdFusion 2018-字符串长度错误

我不确定这是否是ColdFusion 2018错误,或者它是否是ColdFusion 2018实施Firebird 2.5的Jaybird 2.2.10驱动程序的方式。

我有一个表,其中包含名为“ item_date”的列。此列具有Firebird“日期”数据类型。在ColdFusion 10中,以下查询根据返回的月份显示正确的字符串长度。但是,在ColdFusion 2018中,所有字符串的长度返回为9。几乎就像ColdFusion将结果集分配为CHAR(9)数据类型,而不是应有的VARCHAR。

我的概念证明代码示例如下所示。

<cfquery name="test" datasource="#application.dsn#">
    SELECT 
        CASE EXTRACT (MONTH from item_date)
        WHEN 1 THEN 'January'
        WHEN 2 THEN 'February'
        WHEN 3 THEN 'March'
        WHEN 4 THEN 'April'
        WHEN 5 THEN 'May'
        WHEN 6 THEN 'June'
        WHEN 7 THEN 'July'
        WHEN 8 THEN 'August'
        WHEN 9 THEN 'September'
        WHEN 10 THEN 'October'
        WHEN 11 THEN 'November'
        WHEN 12 THEN 'December'
        END itemMonth
    FROM    MY_TABLE
</cfquery>

<cfloop query="test">
    #test.itemMonth# - Length: #Len(test.itemMonth)#<br />
</cfloop> …
Run Code Online (Sandbox Code Playgroud)

coldfusion firebird jaybird firebird2.5

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