1. 程式人生 > >Java鏈接Oracle

Java鏈接Oracle

row result tns nec ive param for 自己 user

首先在Navicat裏面鏈接Oracle:

技術分享圖片

連接時老報錯:ORA-12505, TNS:listener does not currently know of SID given in connect descript....

一開始以為是listener的問題,嘗試了很多還是不行。解決步驟如下:

技術分享圖片

這個文件(在你的技術分享圖片

host改成你的IP

技術分享圖片

連接代碼:

package com.sql.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
 
public class DBUtil {
 
 // 創建一個數據庫連接
    public static Connection getConnection()
    {
    	 Connection connection = null;
    	 String USERNAMR = "ABC";
         String PASSWORD = "*****";//自己的密碼
         String DRVIER = "oracle.jdbc.OracleDriver";
         String URL = "jdbc:ora:thin:@localhost:1521:ORCL";
        try {
        	System.out.println("嘗試輸出!");
            Class.forName(DRVIER);
            System.out.println("馬佳慧無敵!");
            connection = DriverManager.getConnection(URL, USERNAMR, PASSWORD);
            System.out.println("成功連接數據庫");
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
  
        return connection;
    }
    //關閉資源
    public static void close(Statement state, Connection con) {
		if (state != null) {
			try {
				state.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		if (con != null)
			try {
				con.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	}

	/**
	 * 關閉數據庫的連接對象,SQL語句對象,查詢結果集對象
	 * 
	 * @param rs
	 *            結果集對象
	 * @param state
	 *            Statement對象
	 * @param con
	 *            Connection對象
	 */
	public static void close(ResultSet rs, java.sql.Statement state, Connection con) {

		if (rs != null)
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		if (state != null)
			try {
				state.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		if (con != null)
			try {
				con.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

	}
 
}

  註意的地方:技術分享圖片那裏要寫ORCL。原因是數據庫服務器的名稱寫錯了:

技術分享圖片

完美解決:

技術分享圖片

Java鏈接Oracle