簡體   English   中英

獲取異常:網絡適配器無法在簡單的 jdbc 程序中建立連接

[英]getting exception: The Network Adapter could not establish the connection in simple jdbc program

我試圖運行一個簡單的 jdbc 代碼 [使用 jdk 1.6,oracle 10g] 作為,

package javaapplication2;
import java.text.*;
import java.sql.*;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.BufferedWriter;
/**
 * @author animark
 */
public class CallableStatementEx1 {
    public CallableStatementEx1(){;}

public static void main(String s[]) throws Exception {
    try
    {
        Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
        Connection con=null;
        String url= "jdbc:oracle:thin:@//localhost:1521:orcl" ;   
        con = DriverManager.getConnection(url,"scott","password");

        String query="update emp set HIREDATE=?,ENAME=? where empno=?";

        //Step1: Get PreparedStatement
        PreparedStatement ps=con.prepareStatement(query);

        //Prepare java.sql.Date object
        /*
        This logic shows how to convert simple String that is in 
        dd-MM-yyyy format into Date object
        */
        SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy");
        java.util.Date d=sdf.parse("26-12-2001");
        java.sql.Date newdate=new java.sql.Date(d.getTime());

        //Step2: set parameters
        ps.setDate(1,newdate);
        ps.setString(2,"animark");
        ps.setInt(3,7839);

        //Step3: execute the query
        int i=ps.executeUpdate();

        System.out.println("record updated count: "+i);
        con.close();
    }
    catch(Exception e)
    {
                    e.printStackTrace();

    }
    }//main
}//class

代碼正在正確編譯。 但是當我嘗試運行它時,我收到以下異常..

java.sql.SQLException: Io exception: The Network Adapter could not establish the connection
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
at javaapplication2.CallableStatementEx1.main(CallableStatementEx1.java:19)

我檢查了 oracle 服務,它們都已啟動並正在運行。

另外,請查找其他文件的內容為

================================================== ================================ tnsnames.ora:

# tnsnames.ora Network Configuration File: C:\oraclexe\app\oracle\product\10.2.0\server\BIN\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

================================================== ==================================

sqlnet.ora

# sqlnet.ora Network Configuration File: C:\oraclexe\app\oracle\product\10.2.0\server\BIN\network\admin\sqlnet.ora
# Generated by Oracle configuration tools.

# This file is actually generated by netca. But if customers choose to 
# install "Software Only", this file wont exist and without the native 
# authentication, they will not be able to connect to the database on NT.

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)

================================================== ==============================

# listener.ora Network Configuration File: C:\oraclexe\app\oracle\product\10.2.0\server\BIN\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = C:\oraclexe\app\oracle\product\10.2.0\server\BIN)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )

================================================== ==============================

我能夠使用憑據“scott/password”連接到實例“orcl”,但是當我嘗試使用語句進行連接時

SQL> 將 sys/password@orcl 連接為 sysdba

我收到以下錯誤.. ORA-12514: TNS:listener 目前不知道連接中請求的服務

描述符。

我還為 orcl 運行了 LSNRCTL 並發現

用於 32 位 Windows 的 LSNRCTL:版本 10.2.0.1.0 - 2012 年 7 月 22 日 13:42:30 生產

版權所有 (c) 1991, 2005,Oracle。 版權所有。

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orcl)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
    Handler(s):
      "DEDICATED" established:0 refused:0
         LOCAL SERVER
The command completed successfully

請指教。

偵聽器不知道數據庫。 實例是否正在運行?

您可以參考http://docs.oracle.com上的 Oracle 文檔,甚至可以參考http://www.tldp.org/HOWTO/Oracle-7-HOWTO-4.html 上的舊 howto,了解不同的偵聽器配置。

在大多數情況下,網絡配置助手 (netca) 將能夠為您提供工作的基本配置,其中數據庫會自動向偵聽器注冊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM