๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ๋ฐฐ์šฐ๊ณ  ์ตํžˆ๊ธฐ +/JDBC

(60)[oracle]2์ผ์ฐจ: JDBC01-test001~003/ DBConn

by ์ข…์ด๋นจ๋Œ€ 2023. 11. 21.
TOP

๋ชฉ์ฐจ

    1. 23.11.20(์›”)

    F_JDBC01

    ใ„ด C:\JDBCStudy\JDBC01\src\com\test

    ใ„ดใ„ด test001.java

    /*======================
    	Test001.java
    =======================*/
    
    package com.test;
    
    public class test001
    {
    	public static void main(String[] args)
    	{
    		System.out.println("JAVA Test");
    		
    	}
    }

    ใ„ดใ„ด test002.java

    /*======================
    	Test002.java
    =======================*/
    
    package com.test;
    
    import java.sql.Connection;
    
    import com.util.DBConnBackup2;
    
    public class Test002
    {
    	public static void main(String[] args)
    	{
    		Connection conn = DBConnBackup2.getConnection();
    		// โ€ป DB ์—ฐ๊ด„ ๊ณผ์ •์ด ๋งค์šฐ ๋ถ€ํ•˜๊ฐ€ ํฌ๊ธฐ ๋•Œ๋ฌธ์— 
    		//	  ํ•œ ๋ฒˆ ์—ฐ๊ฒฐ๋œ ๊ฐ์ฒด๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก Singleton ํŒจํ„ด ์ ์šฉ~!!!
    		
    		// ์œ„์˜ getConnection() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด
    		// ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ •์ƒ์ ์ธ ์—ฐ๊ฒฐ์ด ์ด๋ฃจ์–ด์ง„ ์ƒํ™ฉ์ด๋ผ๋ฉด...
    		if(conn != null)
    		{
    			System.out.println("๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์„ฑ๊ณต~!!!");
    		}
    		
    		DBConnBackup2.close();
    	}
    }

    ใ„ดใ„ด test003.java

    /*======================
    	Test003.java
    =======================*/
    
    package com.test;
    
    import java.sql.Connection;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    import com.util.DBConn;
    
    public class Test003
    {
    	public static void main(String[] args) throws ClassNotFoundException, SQLException
    	{
    		// ์—ฐ๊ฒฐ ๊ฐ์ฒด ์ƒ์„ฑ(๊ตฌ์„ฑ)
    		Connection conn = DBConn.getConnection();
    		
    		if(conn == null)
    		{
    			System.out.println("๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์‹คํŒจ~!!!");
    			System.exit(0);
    		}
    		
    		// ** if ๋‚˜ else๋กœ ํ•˜์ง€ ์•Š์€ ์ด์œ : ์‹คํŒจ์ผ ๋•Œ๋งŒ ๋ฉ”์„ธ์ง€ ์ถœ๋ ฅํ•˜๊ณ , ์„ฑ๊ณต์€ ์ž ์‹œ ํ…Œ์ŠคํŠธ.
    		//System.out.println("๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์„ฑ๊ณต~!!!");
    		
    		try
    		{
    			// ์ž‘์—… ๊ฐ์ฒด ๊ตฌ์„ฑ(์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ค€๋น„)
    			/* ** ์—ฐ๊ฒฐ์„ ๋กœ์— ํŒŒ๋ผ๋‚ต๋ฐ”๊ตฌ๋‹ˆ ๋งค๋‹ฌ๊ธฐ ** */
    			Statement stmt = conn.createStatement();
    			
    			//โ€ป ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ณผ์ •
    			//		ํ•œ ๋ฒˆ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์‹œ ์‹คํ–‰ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ƒํ™ฉ์ด๋‹ค.
    			//		๊ธฐ๋ณธ ํ‚ค ์ œ์•ฝ์กฐ๊ฑด์ด ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ
    			//		๋™์ผํ•œ ํ‚ค ๊ฐ’์ด ์ค‘๋ณต๋  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
    			
    			// ์ฟผ๋ฆฌ๋ฌธ ์ค€๋น„
    			String sql = "INSERT INTO TBL_MEMBER(SID, NAME, TEL) VALUES(2,'์˜ค์ˆ˜๊ฒฝ','010-2222-2222')";
    			//-- ์ฃผ์˜1. ์ฟผ๋ฆฌ๋ฌธ ๋์— <;> ๋ถ™์ด์ง€ ์•Š๋Š”๋‹ค.
    			//-- ์ฃผ์˜2. ์ž๋ฐ”์—์„œ ์‹คํ–‰ํ•œ DML ๊ตฌ๋ฌธ์€ ๋‚ด๋ถ€์ ์œผ๋กœ ์ž๋™ COMMIT ๋œ๋‹ค.(์˜คํ† ์ปค๋ฐ‹)
    			//-- ์ฃผ์˜3. ์˜ค๋ผํด์—์„œ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚˜์ง€ ์•Š์€ ์ƒํƒœ๋ฉด ๋ฐ์ดํ„ฐ ์•ก์…˜ ์ฒ˜๋ฆฌ๊ฐ€ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค.
    			
    			// stmt.executeUpdate();
    			// stmt.executeQuery();
    			
    			// ์ฟผ๋ฆฌ๋ฌธ ์ „๋‹ฌ(์‹คํ–‰)
    			int result = stmt.executeUpdate(sql);
    			//-- ์ ์šฉ๋œ ํ–‰์˜ ๊ฐฏ์ˆ˜ ๋ฐ˜ํ™˜
    			
    			if (result > 0)
    			{
    				System.out.println("๋ฐ์ดํ„ฐ ์ž…๋ ฅ ์„ฑ๊ณต~!!!");
    			}else {
    				System.out.println("์ž…๋ ฅ ์‹คํŒจ~ ใ… ใ…กใ… ");
    			}
    			
    		} catch (Exception e)
    		{
    			System.out.println(e.toString());
    		}
    		
    		DBConn.close();
    		//-- ๋ฆฌ์†Œ์Šค ๋ฐ˜๋‚ฉ(์—ฐ๊ฒฐ ์ข…๋ฃŒ)
    	}
    }

    ใ„ด C:\JDBCStudy\JDBC01\src\com\util

    ใ„ดใ„ด DBConn.java

    /* ====================
    	DBConn.java
    =======================*/
    
    /* โ€ป ์‹ฑ๊ธ€ํ†ค(singletone) ๋””์ž์ธ ํŒจํ„ด์„ ์ด์šฉํ•œ Database ์—ฐ๊ฒฐ ๊ฐ์ฒด ์ƒ์„ฑ ์ „์šฉ ํด๋ž˜์Šค
    	  -> DB ์—ฐ๊ฒฐ ๊ณผ์ •์ด ๋ถ€ํ•˜๊ฐ€ ๋งค์šฐ ํฌ๊ธฐ ๋•Œ๋ฌธ์—
    	  	 ํ•œ๋ฒˆ ์—ฐ๊ฒฐ๋œ ๊ฐ์ฒด๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์ง€ ์•Š์„๊นŒ...
    	  	 
    	** 
    	*๋””์ž์ธ ํŒจํ„ด: ๊ณ„์ธต์— ๋Œ€ํ•œ ๊ตฌ์กฐ,๊ณต์‹ํ™” ๋œ ์„ค๊ณ„ 
    	*ใ„ด ์ฝ”๋“œ๋ ˆ๋ฒจ์˜ ๊ทœ์น™์„ฑ: ์•Œ๊ณ ๋ฆฌ์ฆ˜
    	*ex. ๊ฑด์ถ•ํ•™ 10์ธต ์งœ๋ฆฌ ๊ฑด๋ฌผ์„ ์ง“๋Š”๋‹ค-> ๊ธฐ์ดˆ๊ณต์‚ฌํ•ด์•ผํ•จ
    	**
    */
    package com.util;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    // ** ์™ธ์šธ๊ฒƒ **
    public class DBConn
    {
    	// ๋ณ€์ˆ˜ ์„ ์–ธ(์—ฐ๊ฒฐ ๊ฐ์ฒด)
    	private static Connection dbConn;
    	// ** static -> ์‹ฑ๊ธ€ํ†ค์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋Œ€ํ‘œ ์ฝ”๋“œ
    	// ** ใ„ด ํƒ„์ƒ์‹œ์ , ๊ณต์œ 
    	// ** 		์ด ๊ตฌ๋ฌธ์—์„œ๋Š” ๊ณต์œ ์˜ ๊ฐœ๋…์„ ๊ฐ€์ ธ๊ฐ
    	// ** c - class, i - interface
    	
    	// ๋ฉ”์†Œ๋“œ ์ •์˜ -> ์—ฐ๊ฒฐ
    	public static Connection getConnection() throws ClassNotFoundException, SQLException
    	{
    		// ** ์—ฐ๊ฒฐํ•  ๋•Œ ์ด ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐํ•˜๊ฒ ๋‹ค๋Š” ์ •์˜
    		// ** ์—ฐ๊ฒฐ์— ํ•œ๋ฒˆ ์—ฐ๊ฒฐ๋˜๋ฉด 
    		// ํ•œ ๋ฒˆ ์—ฐ๊ฒฐ๋œ ๊ฐ์ฒด๋ฅผ ๊ณ„์† ์‚ฌ์šฉ
    		// ์ฆ‰, ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋งŒ ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ
    		// -> ์‹ฑ๊ธ€ํ†ค(๋””์ž์ธ ํŒจํ„ด)
    		if (dbConn == null)
    		{
    			String url = "jdbc:oracle:thin:@localhost:1521:xe";
    			//-- <localhost>๋Š” ์˜ค๋ผํด ์„œ๋ฒ„์˜ ip ์ฃผ์†Œ๋ฅผ ๊น†ํ•˜๋Š” ๋ถ€๋ถ„
    			//	"jdbc:oracle:thin:@localhost:1521:xe
    			//	jdbc:oracle:thin:@211.238.142.164:1521:xe
    			//	jdbc:oracle:thin:@127.0.0.1:1521:xe
    					//	** 127.0.0.1 -> localhost **
    					//	** xe: ์‹œ์Šคํ…œ์— ๋Œ€ํ•ด ๊ณ ์œ ํ•˜๊ฒŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ
    					//	** ใ„ด ๋‚ด๊ฐ€ ์ ‘์†
    			//-- <1521> ์€ ์˜ค๋ผํด ๋ฆฌ์Šค๋„ˆ Port Number
    			//-- <xe> ๋Š” ์˜ค๋ผํด SID(Express Edition ์˜ SID ๋Š” xe)
    			
    			String user = "scott";
    			//-- ์˜ค๋ผํด ์‚ฌ์šฉ์ž ๊ณ„์ • ์ด๋ฆ„
    			
    			String pwd = "tiger";
    			//-- ์˜ค๋ผํด ์‚ฌ์šฉ์ž ๊ณ„์ • ์•”ํ˜ธ
    			
    			Class.forName("oracle.jdbc.driver.OracleDriver");
    			//-- OracleDriver ํด๋ž˜์Šค์— ๋Œ€ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ(ํด๋ž˜์Šค ์ฐพ์•„์ค˜~!!!)
    				//	** Class๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ.forName ๋ฉ”์†Œ๋“œ๋ฅผ ์ด๋ฆ„์„ ๊ฐ€์ง„ ํ–‰์œ„๋ฅผ ํ•จ
    				//	** forName: ์ด๋ฆ„์„ ์ฐพ๋Š” ๊ฒƒ **
    			
    			dbConn = DriverManager.getConnection(url, user, pwd);
    			//-- ์˜ค๋ผํด ์„œ๋ฒ„ ์‹ค์ œ ์—ฐ๊ฒฐ
    				//	** getConnection: static ๋ฉ”์†Œ๋“œ **
    			//	๊ฐ–๊ณ  ์žˆ๋Š” ์ธ์ž๊ฐ’(๋งค๊ฐœ๋ณ€์ˆ˜)์€ ์˜ค๋ผํด์ฃผ์†Œ, ๊ณ„์ •๋ช…,ํŒจ์Šค์›Œ๋“œ
    		}
    		
    		// ๊ธฐ์กด์— ๋งŒ๋“ค์–ด ๋†“์€ ์—ฐ๊ฒฐ๊ฐ์ฒด๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜
    		return dbConn;
    		//-- ๊ตฌ์„ฑ๋œ ์—ฐ๊ฒฐ ๊ฐ์ฒด ๋ฐ˜ํ™˜
    	}
    	
    	// ๋ฉ”์†Œ๋“œ ์ •์˜ -> ์˜ค๋ฒ„๋กœ๋”ฉ -> ์—ฐ๊ฒฐ
    	public static Connection getConnection(String url, String user, String pwd) throws SQLException, ClassNotFoundException 
    	{
    		// ํ•œ ๋ฒˆ ์—ฐ๊ฒฐ๋œ ๊ฐ์ฒด๋ฅผ ๊ณ„์† ์‚ฌ์šฉ
    		// ์ฆ‰, ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋งŒ ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ
    		// -> ์‹ฑ๊ธ€ํ†ค(๋””์ž์ธ ํŒจํ„ด)
    		if (dbConn == null)
    		{
    			Class.forName("oracle.jdbc.driver.OracleDriver");
    			dbConn = DriverManager.getConnection(url, user, pwd);
    		}
    		
    		return dbConn;
    		//-- ๊ตฌ์„ฑ๋œ ์—ฐ๊ฒฐ ๊ฐ์ฒด ๋ฐ˜ํ™˜
    	}
    	
    	// ๋ฉ”์†Œ๋“œ ์ •์˜ -> ์—ฐ๊ฒฐ ์ข…๋ฃŒ
    	public static void close() throws SQLException
    	{
    		// ** ์ด๋ฏธ ๋Š์–ด์ง„ ๊ฒƒ์„ ๋‹ค์‹œ ๋Š์ง€ ์•Š๋„๋ก..
    		// dbConn ๋ณ€์ˆ˜(๋ฉค๋ฒ„ ๋ณ€์ˆ˜)๋Š”
    		// Database ๊ฐ€ ์—ฐ๊ฒฐ ๋œ ์ƒํƒœ์ผ ๊ฒฝ์šฐ Connection์„ ๊ฐ–๋Š”๋‹ค.
    		// ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋ผ๋ฉด.. null์ธ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.
    		if (dbConn != null)
    		{
    			// ** ์ด๋ฆ„ ์•ž์— is๊ฐ€ ๋ถ™์œผ๋ฉด ๋งž๋Š”์ง€ ์•„๋‹Œ์ง€ ํ™•์ธํ•˜๋Š” ๋ฉ”์†Œ๋“œ -> ๊ฒฐ๊ณผ boolean
    			// ์—ฐ๊ฒฐ ๊ฐ์ฒด(dbConn)์˜ isClosed() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ ์ƒํƒœ ํ™•์ธ
    			//-- ์—ฐ๊ฒฐ์ด ๋‹ซํ˜€์žˆ๋Š” ๊ฒฝ์šฐ true ๋ฐ˜ํ™˜
    			//	 ์—ฐ๊ฒฐ์ด ๋‹ซํ˜€์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ false ๋ฐ˜ํ™˜
    			if (!dbConn.isClosed())
    			{	
    				dbConn.close();
    				
    				//-- ์—ฐ๊ฒฐ ๊ฐ์ฒด์˜ close() ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ์„ ํ†ตํ•ด ์—ฐ๊ฒฐ ์ข…๋ฃŒ~!!
    			}
    		}
    		
    		// check~!!!
    		dbConn = null;
    		//-- ์—ฐ๊ฒฐ ๊ฐ์ฒด ์ดˆ๊ธฐํ™”
    		// ** null ๋กœ ์ดˆ๊ธฐํ™” ์‹œํ‚ค์ง€ ์•Š์œผ๋ฉด ์—ฐ๊ฒฐ์— ์˜ค๋ฅ˜๋‚จ
    	}	
    	
    }

    ใ„ดใ„ด DBConnBackup2.java

    /*======================
    	DBConnBackup2.java
    =======================*/
    package com.util;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    public class DBConnBackup2
    {
    	private static Connection dbConn;
    
    	public static Connection getConnection()
    	{
    		if (dbConn == null)
    		{
    			try
    			{
    				String url = "jdbc:oracle:thin:@localhost:1521:xe";
    				String user = "scott";
    				String pwd = "tiger";			
    				Class.forName("oracle.jdbc.driver.OracleDriver");
    				dbConn = DriverManager.getConnection(url, user, pwd);
    			} catch (Exception e)
    			{
    				System.out.println(e.toString());
    				//-- ์˜ค๋ผํด ์—ฐ๊ฒฐ ์‹คํŒจ ์‹œ ์˜ค๋ฅ˜ ๋ฉ”์„ธ์ง€ ์ถœ๋ ฅ ๋ถ€๋ถ„
    			}
    			
    		}
    		
    		return dbConn;
    	}
    	
    	public static Connection getConnection(String url, String user, String pwd)
    	{
    		if (dbConn == null)
    		{
    			try
    			{
    				Class.forName("oracle.jdbc.driver.OracleDriver");
    				dbConn = DriverManager.getConnection(url, user, pwd);
    			} catch (Exception e)
    			{
    				System.out.println(e.toString());
    			}
    			
    		}
    		
    		return dbConn;
    	}
    	
    	public static void close()
    	{
    		if (dbConn != null)
    		{
    			try
    			{
    				if (!dbConn.isClosed())
    					dbConn.close();
    			} catch (Exception e)
    			{
    				System.out.println(e.toString());
    			}				
    		}
    		
    		dbConn = null;
    	}	
    	
    }

    ใ„ด JDBC01_scott.sql

    SELECT USER
    FROM DUAL;
    --==>> SCOTT
    
    SELECT *
    FROM TAB;
    
    PURGE RECYCLEBIN;
    
    DROP TABLE TBL_MEMBER;
    --==>> Table TBL_MEMBER์ด(๊ฐ€) ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    
    --โ—‹ ์‹ค์Šต ํ…Œ์ด๋ธ” ์ƒ์„ฑ
    CREATE TABLE TBL_MEMBER
    ( SID   NUMBER
    , NAME  VARCHAR2(30)
    , TEL   VARCHAR2(60)
    , CONSTRAINT MEMBER_SID_PK PRIMARY KEY(SID)
    );
    --==>> Table TBL_MEMBER์ด(๊ฐ€) ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    
    --โ—‹ ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ
    INSERT INTO TBL_MEMBER(SID, NAME, TEL) VALUES(1,'ํ™๊ธธ๋™','010-1111-1111');
    --==>> 1 ํ–‰ ์ด(๊ฐ€) ์‚ฝ์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    
    --โ—‹ ํ™•์ธ
    SELECT *
    FROM TBL_MEMBER;
    --==>> 1	ํ™๊ธธ๋™	010-1111-1111
    
    --โ—‹ ์ปค๋ฐ‹ CHECK~!!!
    COMMIT;
    --==>> ์ปค๋ฐ‹ ์™„๋ฃŒ.
    
    /*
    ** JDBC๋Š” ์ปค๋ฐ‹์ด๋‚˜ ๋กค๋ฐฑ ์•ˆํ•˜๋ฉด ๋ฐ˜๋“œ์‹œ ๋ฌธ์ œ ์ƒ๊น€**
    */
    
    --โ—‹ ์ž๋ฐ”์—์„œ Test003.java ์‹คํ–‰ ํ›„ ๋‹ค์‹œ ํ™•์ธ
    SELECT *
    FROM TBL_MEMBER;
    /*
    2	์˜ค์ˆ˜๊ฒฝ	010-2222-2222
    1	ํ™๊ธธ๋™	010-1111-1111
    */