我不了解 Java,以下内容可能是无关紧要的废话,如果是这种情况,我深表歉意。
不管怎样,很快:1521 is most probably the port you should use (not 1158). Credentials you provided (username = system, password = a123) are wrong; use username = scott, password = tiger instead
上述语句的更长版本:您应该有权访问数据库;看到您的代码,它已安装在您自己的计算机上。它是否已启动并正在运行,即您可以通过 SQL*Plus 连接到它吗?
说你是
应该使用我自己的数据库端口号 1158
好吧,我对此表示怀疑。如果您默认安装了所有东西,那么您的数据库端口号是 1521,而 1158 是为 OEM(Oracle 企业管理器数据库控制台)保留的,所以我不认为 1158 是您应该使用的。见Managing Oracle Database Port Numbers。
此外,您的数据库名称真的是“amani”吗?就是这个
"jdbc:oracle:thin:@localhost:1521:amani","system","a123"
-----
this
建议。为了得到它的端口,使用命令提示符对其进行 TNSPING(我已经删除了输出中不必要的部分):我无法 tnsping amani(显然,我无权访问它)
c:\Temp>tnsping amani
TNS-03505: Failed to resolve name
但我可以 tnsping 我自己的 XE 数据库:
c:\Temp>tnsping xe
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = my-laptop)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = XE)))
OK (110 msec)
看到了吗? “OK”,它的端口是 1521。在您的计算机上执行此操作以找到该信息。
最后,用户名和密码:您使用了特殊之一,您的数据库中最强大的用户 SYSTEM(另一个是 SYS)。它不包含 EMP 表 - 它属于用户 SCOTT(其默认密码是 TIGER)。
当您使用 Oracle 10g 时,如果我没记错的话,SCOTT 是预安装的架构之一,因此您应该能够连接到它。检查如下:在我的 XE 上,我以 SYS 身份连接:
SQL> select username, account_status from dba_users;
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SYS OPEN
SYSTEM OPEN
ANONYMOUS OPEN
SCOTT LOCKED
HR OPEN
<snip>
SQL> alter user scott account unlock;
User altered.
SQL> alter user scott identified by tiger;
User altered.
SQL> connect scott/tiger@xe
Connected.
SQL> select count(*) From emp;
COUNT(*)
----------
12
SQL>
我希望你明白我做了什么。
关于甲骨文的故事就这么多了;如果这没有帮助,我真的不知道该怎么做,以使您的 Java 端工作。希望其他人能够提供帮助。