当前位置: 首页 > 知识库问答 >
问题:

JDBC Oracle驱动程序存在包含特殊字符的用户名问题

东典
2023-03-14

使用Vaadin 7,我创建了一个简单的登录表单,将用户名和密码传递给管理与Oracle系统的数据库连接的类。然后该类登录并创建一个会话。

以下凭据工作:

用户名:User1

密码:Password1

这些凭据会引发错误:

用户名:user1@email.com

密码:Password1

两者都是数据库中的有效用户。我已经在Oracle SQL Developer中使用了上述凭据来确认这一点。

我怀疑JDBC驱动程序不喜欢用户名中的“@”或“.”。有没有办法转义任一字符,以便JDBC驱动程序在连接字符串中忽略它?

堆栈跟踪:

Jan 28, 2014 5:07:48 PM oracle.jdbc.driver.OracleDriver registerMBeans
SEVERE: Error while registering Oracle JDBC Diagnosability MBean.
javax.management.MalformedObjectNameException: Invalid character '
' in value part of property
    at javax.management.ObjectName.construct(Unknown Source)
    at javax.management.ObjectName.<init>(Unknown Source)
    at oracle.jdbc.driver.OracleDriver.registerMBeans(OracleDriver.java:303)
    at oracle.jdbc.driver.OracleDriver$1.run(OracleDriver.java:213)
    at java.security.AccessController.doPrivileged(Native Method)
    at oracle.jdbc.driver.OracleDriver.<clinit>(OracleDriver.java:209)
    at oracle.jdbc.pool.OracleDataSource.<clinit>(OracleDataSource.java:94)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at com.feith.core.Host.getUserConnection(Host.java:82)
    at com.feith.core.FddSession.<init>(FddSession.java:96)
    at com.feith.userregistration.DatabaseSessionController.DBConnect(DatabaseSessionController.java:123)
    at com.feith.userregistration.DatabaseSessionController.<init>(DatabaseSessionController.java:59)
    at com.feith.userregistration.UserLogin.login(UserLogin.java:158)
    at com.feith.userregistration.UserLogin$1.buttonClick(UserLogin.java:95)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:508)
    at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:198)
    at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:161)
    at com.vaadin.server.AbstractClientConnector.fireEvent(AbstractClientConnector.java:969)
    at com.vaadin.ui.Button.fireClick(Button.java:355)
    at com.vaadin.ui.Button.click(Button.java:344)
    at com.vaadin.ui.Button$ClickShortcut.handleAction(Button.java:523)
    at com.vaadin.event.ActionManager.handleAction(ActionManager.java:235)
    at com.vaadin.event.ConnectorActionManager.handleAction(ConnectorActionManager.java:81)
    at com.vaadin.event.ActionManager.handleAction(ActionManager.java:230)
    at com.vaadin.event.ActionManager.handleActions(ActionManager.java:213)
    at com.vaadin.ui.UI.changeVariables(UI.java:353)
    at com.vaadin.server.communication.ServerRpcHandler.changeVariables(ServerRpcHandler.java:396)
    at com.vaadin.server.communication.ServerRpcHandler.handleBurst(ServerRpcHandler.java:221)
    at com.vaadin.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:111)
    at com.vaadin.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:91)
    at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:37)
    at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1382)
    at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:238)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Unknown Source)

共有1个答案

翟承志
2023-03-14

根据Oracle的说法,这是一个错误(BUG-6362104):JDBC驱动程序在加载时抛出MalformedObjectException或InstanceAlreadyExistsException。尝试从OTN再次下载驱动程序。如果您想知道您是否有修补的jar运行:

java-jarojdbc6.jar

未打补丁的罐子上印着

Oracle 11.1.0.6.0-Production JDBC 5.0 complied with JDK1.6

还有打补丁的罐子指纹

Oracle 11.1.0.6.0-Production+ JDBC 5.0 complied with JDK1.6

只需确保您拥有适用于Oracle DB版本的最新JDBC驱动程序。

 类似资料:
  • 我必须使用exe来运行某个函数。但是该目录包含某些具有特殊字符的文件夹,比如“.”,“-”,所以它不会被执行。我可以像重命名文件名一样重命名目录名吗?我不确定需要做什么。 我使用Linux环境。下面是一段代码, 有人能建议我吗?谢谢

  • 问题内容: 我正在编写用于更改JSON文件的脚本,但是当文件转换回JSON时,它将扩展特殊字符。 例如,JSON文件包含带有“&”的密码。复制问题的快速方法是使用以下命令: PS>“密码和123” | Convertto-Json输出为:“ Password \ u0026123” -这是简化的JSON FILE的示例 问题答案: 这是由的自动字符转义功能引起的,并且会影响多个符号,例如 Conv

  • 我有一个java程序正在使用HortonWorks的JDBC驱动程序连接到VirtualBox中的数据库。一切都运行得很好,但我在sql查询中的冒号有问题。 我正在尝试设置的rowid是“:rowid:”。我在前面和后面添加冒号,使列名对于其他应用程序是唯一的。现在冒号必须在那里,我想知道是否有一种方法使用官方站点的Hortonworks JDBC Driver for Apache Hive(v

  • 本文向大家介绍Oracle用户密码含特殊字符时登陆失败问题,包括了Oracle用户密码含特殊字符时登陆失败问题的使用技巧和注意事项,需要的朋友参考一下 当Oracle数据库用户的密码含特殊字符如 @ 时,直接使用正常的密码输入,由于oracle将@后的字符解析为网络服务名而导致登陆失败 如下演示 用户名为:wang密码为:oracle@1网络服务名为:sun 的情况: Linux平台:'wang/

  • 问题内容: 我必须检测一个字符串是否包含任何特殊字符。我该如何检查?Swift支持正则表达式吗? 我尝试了上面的代码,但是只有当我输入第一个字符作为特殊字符时,它才匹配。 问题答案: 您的代码检查字符串中是否没有字符来自给定的集合。您要检查的是给定集合中是否 没有 任何 字符: __ 您还可以使用正则表达式实现此目的: 该模式匹配的字符 不在 AZ,az或0-9范围内。 Swift 2更新: Sw

  • 问题内容: 我有一个 DOM元素: 有两个ID 和的字段..。我可以访问,没有任何问题,但是由于名称中包含句点,导致语法错误而失败。 如何访问这些属性? 问题答案: 使用方括号表示法: 这适用于任何对象,对于非标识符安全的字符以及访问你可能提前都不知道的键特别有用。