从Java jdbc应用程序登录Oracle Express 18c

从Java jdbc应用程序登录Oracle Express 18c,java,oracle,jdbc,Java,Oracle,Jdbc,这里是新的Oracle Express用户 我在Win 64环境中安装了db,但没有问题, 从终端使用sqlplus创建用户并授予其角色和权限, 最后,这个用户可以很好地使用OracleSQLCL实用程序中的本地数据库- 表格、查询等 当我尝试使用Oracle for Java提供的样板代码时,问题就出现了。 在Eclipse中,在新项目中,添加了jdbc8 JAR,并在SQLcl用户信条中进行了测试 被异常拒绝:java.sql.SQLException:ORA-01045:user C##D

这里是新的Oracle Express用户

我在Win 64环境中安装了db,但没有问题, 从终端使用sqlplus创建用户并授予其角色和权限, 最后,这个用户可以很好地使用OracleSQLCL实用程序中的本地数据库- 表格、查询等

当我尝试使用Oracle for Java提供的样板代码时,问题就出现了。 在Eclipse中,在新项目中,添加了jdbc8 JAR,并在SQLcl用户信条中进行了测试 被异常拒绝:java.sql.SQLException:ORA-01045:user C##DBUSER缺少创建会话权限;登录被拒绝

以下是使用的Oracle锅炉代码,以及我的本地详细信息:

  OracleDataSource ods = new OracleDataSource();
  ods.setURL("jdbc:oracle:thin:@//localhost:1521/XEPDB1"); 
  ods.setUser("c##dbUser"); 
  ods.setPassword("dbUserPassowrd"); 
  Connection conn = ods.getConnection();

  PreparedStatement stmt = conn.prepareStatement("SELECT 'Hello World!' FROM dual");
  ResultSet rslt = stmt.executeQuery();
  while (rslt.next()) {
    System.out.println(rslt.getString(1));
  }
非常感谢您的帮助,谢谢

正如甲骨文所说:

用户C##DBUSER缺少创建会话权限;登录被拒绝

以特权用户(如SYS)身份连接到Oracle数据库,然后


(或者不管是哪个用户名)。

正确的连接字符串必须是:“jdbc:oracle:thin:@//localhost:1521/XE”,
解释创建用户并授予其权限的数据库名称。

这似乎很奇怪,这个c##dbUser创建并删除表;从终端运行任何查询-我是否必须从java代码重新创建相同的帐户并再次授予他角色/权限?否;如果这是同一个数据库,则不能使用相同的用户名创建两个(或更多)用户。因此,即使你尝试过,也会失败。但是,是的,这很奇怪。您是否连接到正确的数据库?你知道,开发还是生产?它是唯一安装的。从这个锅炉代码中,我获得了连接细节——在SQL开发工具中也可以正常工作。显然,用户是存在的。否则,Oracle会首先抱怨它,而不是说它不能创建会话。也许你的问题与Java本身有关;不幸的是,我不懂Java。我希望其他人能够提供帮助。问题可能出在项目设置上。我首先尝试使用Oracle18c(18.3)jdbc驱动程序包,因为db版本是18c,但最新的19c(19.3)也没有帮助。我使用了简单的Java项目(没有Maven或其他包管理),并通过project->Builld Path->Add External Archives添加了JAR。
grant create session to c##dbuser;