1. Oracle Connection Test


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Oracle Connection Test</title>

</head>

<body>


<%@ page import="java.sql.*" %>


<h2> 데이타베이스 드라이버와 DB Oracle 연결 점검 프로그램 </h2>


<%

try{

String driverName="oracle.jdbc.driver.OracleDriver";

String dbURL = "jdbc:oracle:thin:@localhost:1521:XE";

Class.forName(driverName);

Connection conn = DriverManager.getConnection(dbURL,"scott","tiger");

out.println("Oracle Database 에 접속 했습니다.");

conn.close();

}catch(Exception e){

out.println("Oracle Database 에 접속에 문제가 발생 했습니다.");

out.println(e.getMessage());

e.printStackTrace();

}

%>

<hr size = "5" color ="red">


</body>

</html>



2. dbConnection_2


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ page import="java.sql.*" %>


<%

Connection conn = null;


String driver = "oracle.jdbc.driver.OracleDriver";

String url = "jdbc:oracle:thin:@localhost:1521:xe";

Boolean connect = false;

try{

Class.forName(driver);

conn = DriverManager.getConnection(url,"scott", "tiger");

connect = true;

conn.close();

}catch(Exception e){

connect=false;

e.printStackTrace();

}

%>


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>JDBC Oracle 연동 테스트</title>

</head>

<body>

<h2> Oracle Database 연동 테스트 </h2>

<hr size="5" color="red">

<%

if(connect == true){

%>

<h3> 연결 되었습니다. </h3>


<%

}else{

%>

<h3> 연결에 실패 하였습니다. </h3>

<%} %>

<hr size="5" color="green">


</body>

</html>



3. 미리 연결을 만들어 그것을 계속 쓰는 Connection Full을 이용하는 방법


Full Connection 설정하여 JSP에서 SQL로 연결하는 .XML 문서를 작성하여 JSP에서 테이터 베이스 연결할때 저장된 Full Connection만 불러오면 됩니다.


설정 방법은


C:\aajsp_17\apache-tomcat-8.5.11\lib 폴더 안에 

 tomcat-dbcp.jar 파일을 


C:\java_2017\java\jdk1.8\jre\lib\ext 에 붙여 넣고



C:\java_2017\java\jre1.8\lib\ext 에도 붙여 넣습니다


이클립스에서 Server 에 context.xml 을 삭제 한후 firstjsp > WebContent > META-INF > context.xml 생성


<?xml version="1.0" encoding="UTF-8"?>

<context>

<Resource 

name="jdbc/OracleDB"

auth="Container"

type="javax.sql.DataSource"

username="scott"

password="tiger"

factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"

driverClassName="oracle.jdbc.OracleDriver"

url = "jdbc:oracle:thin:@127.0.0.1:1521:xe"

maxActive="500"

maxIdle="100"

validationQuery = "select 1 from dual"

testOnBorron="false"

poolPreparedStatements="true" />

</context>

context.xml로 저장



<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>


<%@ page import="java.sql.*"%>

<%@ page import="javax.sql.*"%>

<%@ page import="javax.naming.*"%>

<%

Connection conn = null;

try{

Context init = new InitialContext();

DataSource ds = (DataSource)init.lookup("java:comp/env/jdbc/OracleDB");

conn = ds.getConnection();

out.println("<h3>연결에 성공하였습니다.</h3>");

}catch(SQLException e){

out.println("<h3>연결에 실패하였습니다.</h3>");

e.printStackTrace();

}

%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Connection Pool Test</title>

</head>

<body>


</body>

</html>


</body>

</html> 



 : Statement and PreparedStatement

 

 

  . Statement란 실제 데이타베이스에 쿼리를 보내기위한 객체 입니다.

  삽입, 수정, 삭제, 검색을 처리하는 DML 문을 사용할 때는 이 인터페이스를

  사용합니다.

 

  이 객체는 Connection 객체의 연결 정보를 가져와서 DB 에 접근 하므로

  이 객체를 사용하기 위해서는 접속상태인 Connection 객체가 먼저 존재해야 합니다.

 

메소드 의미

executeQuery(String sql) SELECT 문을 실행할때 사용한다 

(ResultSet 객체 반환)

excuteUpdate(String sql) 삽입, 수정, 삭제와 관련된 sql 문 실행에 사용한다.

적용된 행의 수를 int 로 반환한다.

close() Statement 객체를 반환할때 사용한다.



4. statementTest


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>


<%@ page import="java.sql.*" %>

<%@ page import="javax.sql.*" %>

<%@ page import="javax.naming.*" %>


<%

Connection conn = null;


String sql = "INSERT INTO student_1 VALUES(33,'수선화')";

try{

Context init = new InitialContext();

// 가장 먼저 InitialContext(); 객체가 필요 하므로 객체를 하나 생성한다.

// 클래스 javax.naming.InitialContext 는 JNDI 서비스를 하기위해

// 객체 InitialContext를 생성하기 위한 클리스이며 객체 InitialContext가

// 생성 되면 이미 저장한 DBCP 를 위한 리소스를 참조 하게 된다.

DataSource ds = (DataSource)init.lookup("java:comp/env/jdbc/OracleDB");

// InitialContext 객체 변수 init 의 메소드 lookup() 을 이용해

// DataSource 객체를 찾는 일이다. 인터페이스

// jacax.sql.DataSource 는 커넥션풀을 위해 만든

// 인터페이스로 DBMS 커넥션풀을 구현한 객체를 표현한다.

// 즉 톰캣의 JNDI 설정에서 "jdbc/OracleDB" 이름으로

// 커넥션 풀을 위한 객체를 찾아 DataSourde 객체 변수 ds 에 저장한다.

conn = ds.getConnection();

// 마지막으로 DataSource 객체의 메소드 getConnection() 을 호출하여

// Connection 객체 conn 을 얻는다.

Statement stmt = conn.createStatement();

int result = stmt.executeUpdate(sql);

if(result !=0){

out.println("<h3> 레코드가 등록되었습니다.</h3>");

}

}catch(Exception e){

e.printStackTrace();

out.println("<h3> 레코드 등록에 실패하였습니다.</h3>");

}


%>


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>


</body>

</html>



5. prepareStatementTest


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ page import="java.sql.*" %>

<%@ page import="javax.sql.*" %>

<%@ page import="javax.naming.*" %>


<%

Connection conn = null;


String sql ="INSERT INTO student_1 VALUES(?,'들국화')";


try{

Context init = new InitialContext();

DataSource ds = (DataSource)init.lookup("java:comp/env/jdbc/OracleDB");

conn = ds.getConnection();

PreparedStatement pstmt = conn.prepareStatement(sql);

for(int k = 55; k < 65; k++)

{

pstmt.setInt(1, k);

if(pstmt.executeUpdate()!= 0)

{

out.println("<h3>" + k +" 번 레코드를 등록하였습니다. </h3>");

}

}

}catch(Exception e)

{

e.printStackTrace();

out.println("<h3> 레코드 등록에 실패 하였습니다.</h3>");

}


%>


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>


</body>

</html>



6. resultSetTest_1


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ page import="java.sql.*" %>

<%@ page import="javax.sql.*" %>

<%@ page import="javax.naming.*" %>


<%

Connection conn = null;


String sql = "SELECT * FROM student_1 order by num desc";


try{

Context init = new InitialContext();

DataSource ds = (DataSource)init.lookup("java:comp/env/jdbc/OracleDB");

conn = ds.getConnection();

PreparedStatement pstmt = conn.prepareStatement(sql);

ResultSet rss = pstmt.executeQuery();

while(rss.next())

{

out.println("<h3>" +rss.getInt(1)+", "+rss.getString(2)+"<h3>");

}

rss.close();

pstmt.close();

conn.close();

}catch(Exception e){

e.printStackTrace();

out.println("<h3>+데이타를 가져오지 못하였습니다. </h3>");

}


%>      

    

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>


</body>

</html>



7. resultSetCusor


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ page import="java.sql.*" %>

<%@ page import="javax.sql.*" %>

<%@ page import="javax.naming.*" %>

    

<% 

Connection conn = null;

String sql = "SELECT * FROM student_1";


try{

Context init = new InitialContext();

DataSource ds = (DataSource)init.lookup("java:comp/env/jdbc/OracleDB");

conn = ds.getConnection();

PreparedStatement pstmt = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,

ResultSet.CONCUR_UPDATABLE);

ResultSet rss = pstmt.executeQuery();

rss.last();

out.println(rss.getInt(1)+" , "+rss.getString(2)+"<br>");

rss.first();

out.println(rss.getInt(1)+" , "+rss.getString(2)+"<br>");

rss.absolute(3);

out.println(rss.getInt(1)+" , "+rss.getString(2)+"<br>");

}catch(Exception e)

{

e.printStackTrace();

out.println("<h3> 데이타를 불러오지 못하였습니다. </h3>");

}

%>


<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>


</body>

</html>



8. transactionTest


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ page import="java.sql.*" %>

<%@ page import="javax.sql.*" %>

<%@ page import="javax.naming.*" %>

    

<% 

Connection conn = null;

PreparedStatement pstmt = null;

ResultSet rss = null;

String sql1 = "INSERT INTO student_1 VALUES(777, '해바라기')";

String sql2 = "SELECT * FROM student_1 WHERE num = 55";


try{

Context init = new InitialContext();

DataSource ds = (DataSource)init.lookup("java:comp/env/jdbc/OracleDB");

conn = ds.getConnection();

conn.setAutoCommit(false);

pstmt = conn.prepareStatement(sql1);

pstmt.executeUpdate();

pstmt.close();


pstmt = conn.prepareStatement(sql2);

rss = pstmt.executeQuery();

if(!rss.next())

{

conn.rollback();

out.println("<h3> 데이타삽입에 문제가 발생하여 롤백 하였습니다.</h3>");

}

else{

conn.commit();

out.println("<h3> 데이타삽입을 모두 완료 하였습니다.</h3>");

}

pstmt.close();

conn.setAutoCommit(true);

} catch(Exception e)

{

e.printStackTrace();

out.println("<h3> 데이타삽입에 실패하였습니다.</h3>");

}

%>



9. resultSetMataData


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ page import="java.sql.*" %>

<%@ page import="javax.sql.*" %>

<%@ page import="javax.naming.*" %>

    

<% 

Connection conn = null;

String sql = "SELECT * FROM emp";


try{

Context init = new InitialContext();

DataSource ds = (DataSource)init.lookup("java:comp/env/jdbc/OracleDB");

conn = ds.getConnection();


PreparedStatement pstmt = conn.prepareStatement(sql);

ResultSet rss = pstmt.executeQuery();

ResultSetMetaData rsmd = rss.getMetaData();

out.println(" 컬럼수 : "+rsmd.getColumnCount()+"<br>");

for(int i = 1; i <=rsmd.getColumnCount();i++)

{

out.println(i+" 번째 컬럼 이름 : "+rsmd.getColumnName(i)+" , ");

out.println(i+" 번째 타입 이름 : "+rsmd.getColumnTypeName(i)+"<br>");

}

}catch(Exception e){

e.printStackTrace();

}

%>

    

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>


</body>

</html>

+ Recent posts