我继续使用 jaybird 3 挖掘(或玩)并得到已知错误“原因:java.sql.SQLNonTransientConnectionException:连接被拒绝:未指定连接字符集(属性 lc_ctype、编码、charSet 或 localEncoding)。请指定连接字符集(例如属性 charSet=utf-8)或查阅 Jaybird 文档以获取更多信息。”
所以,请帮助我做错了什么,我必须做什么。
第一次尝试
final Connection conn = DriverManager.getConnection( "jdbc:firebirdsql:localhost/3050:g:\\Databases\\EMPLOYEE255.FDB?lc_ctype=utf8", "sysdba", "masterkey" );
这很好用。但是如果我不想(或不能)更改连接字符串怎么办?
正如我在常见问题解答中看到的:https ://www.firebirdsql.org/file/documentation/drivers_documentation/java/faq.html我使用选项运行我的 java 应用程序(来自 netbeans)
-Dorg.firebirdsql.jdbc.defaultConnectionEncoding=NONE
但得到了同样的错误。那么好吧。可能是我在netbeans中做错了什么......
我尝试通过属性使用连接选项。所以。我改变我的代码:
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; }
运行应用程序 - 并得到同样的错误....我不能从属性传递“lc_ctype”?还是我没明白什么?