Jaybird 3和默认代码页通过属性

时间:2017-04-06 22:21:36

标签: firebird codepages jaybird

我继续挖掘(或玩)jaybird 3并得到已知错误"引起:java.sql.SQLNonTransientConnectionException:连接被拒绝:未指定连接字符集(属性lc_ctype,encoding,charSet或localEncoding)。请指定连接字符集(例如属性charSet = utf-8)或查阅Jaybird文档以获取更多信息。"

所以,请帮助我做错了什么以及我必须做些什么。

  1. 首先尝试

    final Connection conn = DriverManager.getConnection(
            "jdbc:firebirdsql:localhost/3050:g:\\Databases\\EMPLOYEE255.FDB?lc_ctype=utf8",
            "sysdba",
            "masterkey"
    );
    

    工作正常。但是,如果我不想(或不能)更改连接字符串怎么办?

  2. 正如我在faq中看到的那样:https://www.firebirdsql.org/file/documentation/drivers_documentation/java/faq.html我使用选项

    运行我的java应用程序(来自netbeans)
    -Dorg.firebirdsql.jdbc.defaultConnectionEncoding=NONE
    
  3. 但得到同样的错误。那么好吧。也许我在netbeans中做错了...

    1. 我尝试通过Properties使用连接选项。所以。我改变了我的代码:

      public DataSource createDataSource(){
          final DriverManagerDataSource ds = new DriverManagerDataSource();
          ds.setDriverClassName( "org.firebirdsql.jdbc.FBDriver" );
          ds.setUrl( getConnectionURL( )); //here no appended "?lc_type...."
          ds.setUsername( getLogin() );
          ds.setPassword( getPassword() );
          //from here--->
          Properties pr = new Properties();
          pr.setProperty("lc_ctype", "utf8");
          ds.setConnectionProperties(pr);
          //<---to here
          return ds;
      }
      
    2. 运行应用程序 - 并出现同样的错误....我无法通过&#34; lc_ctype&#34;来自财产?或者我不明白?

0 个答案:

没有答案