데이터베이스에서의 의미

여러 곳의 값을 같게 만드는 것

(UI와 DB의 내용을 같게 만드는 등)

 

언어에서의 의미

작업의 순서가 하나로 이어지는 것(?)

'낙서장' 카테고리의 다른 글

쿠키런 피피티 깃헙  (0) 2020.05.21
md 파일 작성하는 법  (0) 2020.05.21
200513  (0) 2020.05.13
괜찮은 출판사, 책  (0) 2020.05.11
프로젝트 제작시 폴더 구분  (0) 2020.04.28

GUI방식으로 생성하는 방법

롬복을 설치한 후

 

아래와 같은 생성자로 new를 하려면 값의 순서가 햇갈릴 수가 있다.

이런걸 방지하기위한 방법 중 하나가 빌더 패턴이다.

 

메인 프레임에서 데이터를 넣는 부분을 아래와 같이 만들어보자.

 

아래와 같이 잘 나온다.

 

모든 경우의 수의 생성자를 사용할 수 있다.

즉, 생성자에 필요한 데이터를 몇가지 빼먹어도 인스턴스가 생성된다

* 다만 기본생성자가 필요하다면 그것은 직접 만들어 줘야한다

 

빌더패턴에 대해 더 알아보기

https://johngrib.github.io/wiki/builder-pattern/#%EB%B9%8C%EB%8D%94-%ED%8C%A8%ED%84%B4effective-java-%EC%8A%A4%ED%83%80%EC%9D%BC

 

빌더 패턴(Builder Pattern)

객체의 생성 방법과 표현 방법을 분리한다

johngrib.github.io

 

필수인자를 세팅하는법.

'Database > OracleSQL' 카테고리의 다른 글

오라클 디벨로퍼 시퀀스 생성  (0) 2020.05.15
오라클 CHECK 체크 의미  (1) 2020.05.15
데이터베이스의 내용을 Json으로 변경하여 웹에 띄우기  (0) 2020.05.14
200512  (0) 2020.05.12
200507  (0) 2020.05.07

 

먼저 DB에 테이블을 만들고 내용을 넣자

 

자바에 파일을 먼저 만들어주자

 

내용

 

package db.beans;

import java.sql.Connection;
import java.sql.DriverManager;

public class DBConnection {
	public static Connection getConnection() throws Exception {
		System.out.println("DB연결시도");
		Class.forName("oracle.jdbc.driver.OracleDriver");
		return DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "c##madang", "c##madang");
	}
	
	public static Connection getConnection(String ip, int port, String db, String user, String pw) throws Exception {
		Class.forName("oracle.jdbc.driver.OracleDriver");
		return DriverManager.getConnection("jdbc:oracle:thin:@" +ip+ ":" +port+ ":" + db, user, pw);
	}
}

 

 

package db.beans;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;

public class QueryBean {
	Connection conn;
	Statement stmt;
	ResultSet rs;
	
	public QueryBean() {
		conn = null;
		stmt = null;
		rs = null;
	}
	
	public void getConnection() {
		try {
			conn = DBConnection.getConnection();
		} catch (Exception e) {
			// TODO: handle exception
		}
		try {
			stmt = conn.createStatement();		
		} catch (Exception e) {
			// TODO: handle exception
		}
	}
	
	public void closeConnection() {
		if(stmt != null) {
			try {
				stmt.close();
			} catch (Exception e) {
				// TODO: handle exception
			}
		}
		if(conn != null) {
			try {
				conn.close();
			} catch (Exception e) {
				// TODO: handle exception
			}
		}
	}
	
	public ArrayList<String> getUserInfo() throws Exception{ // 꺽쇠
		
		StringBuffer sb = new StringBuffer();
		
		sb.append(" SELECT ");
		sb.append(" U_ID, U_NAME, U_PHONE, U_GRADE, WRITE_TIME ");
		sb.append(" FROM ");
		sb.append(" USER_INFO_SAMPLE ");
		sb.append(" ORDER BY ");
		sb.append(" WRITE_TIME ");
		
		rs = stmt.executeQuery(sb.toString());
		
		ArrayList<String> res = new ArrayList<>();
		while (rs.next()) {
			res.add(rs.getString(1));
			res.add(rs.getString(2));
			res.add(rs.getString(3));
			res.add(rs.getString(4));
			res.add(rs.getString(5));
		}
		
		System.out.println(sb.toString());
		return res;
	}
}

 

 

<%@page import="java.util.ArrayList"%>
<%@page import="db.beans.QueryBean"%>
<%@ page contentType="text/html; charset=EUC-KR" pageEncoding = "EUC-KR" %>
<jsp:useBean id = "QueryBean" scope="page" class= "db.beans.QueryBean" />
<jsp:setProperty name = "QueryBean" property = "*"/>
<%
	response.setHeader("Cache-Control" , "no-store");
	response.setHeader("Pragma" , "no-cache");
	response.setDateHeader("Expires" , 0);
	
	request.setCharacterEncoding("UTF-8");
	
	QueryBean.getConnection();
	
	ArrayList<String> resArr = new ArrayList<>();
	
	try
	{
		resArr = QueryBean.getUserInfo();
	}
	catch(Exception e )
	{
		out.print(e.toString());
	}
	finally
	{
		QueryBean.closeConnection();
	}
	out.println("{");
	out.println("\"datas\":[");
	
	if(resArr.size() == 0)
	{
		out.println("]");
		out.println("}");
	}else
	
	{
	out.print("{");
	out.print("\"ID\":\"" +         (String)resArr.get(0) + "\", ");
	out.print("\"NAME\":\"" +         (String)resArr.get(1) + "\", ");
	out.print("\"PHONE\":\"" +         (String)resArr.get(2) + "\", ");
	out.print("\"GRADE\":\"" +         (String)resArr.get(3) + "\", ");
	out.print("\"WRITE_TIME\":\"" +         (String)resArr.get(4) + "\"");
	out.print("} ");
	for(int i =5; i <resArr.size(); i+=5)
	{
		out.print(",");
		out.print("{");
		out.print("   \"ID\": \""    + (String)resArr.get(i) + "\" ,");
		out.print("   \"NAME\": \""    + (String)resArr.get(i+1) + "\" ,");
		out.print("   \"PHONE\": \""    + (String)resArr.get(i+2) + "\" ,");
		out.print("   \"GRADE\": \""    + (String)resArr.get(i+3) + "\" ,");
		out.print("   \"WRITE_TIME\": \""    + (String)resArr.get(i+4) + "\"");
		
		
		out.print("}");
	}
	out.print("]");
	out.print("}");
	}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>

</body>
</html>

 

결과

 

'Database > OracleSQL' 카테고리의 다른 글

오라클 CHECK 체크 의미  (1) 2020.05.15
오라클 시퀀스 권한주기  (0) 2020.05.15
200512  (0) 2020.05.12
200507  (0) 2020.05.07
200506  (0) 2020.05.06

SQL에서
리턴값이 있는 함수를 Function이라고하고
리턴값이 없는 함수를 Procedure라고 한다

자바에서는 함수에 매개변수가 들어가는 것이 in 리턴받는 값을 out이라고 생각할 수 있는데

SQL에서의 함수와 프로시저의 in / out / in out은 약간 다른개념이다.

매개변수로 들어갈 시 모드를 이야기 한다.

매개변수를 넣을 때 레퍼런스를 넣어 리턴하지 않고 매개변수에 빈 객체를 보내서 주소값을 채워넣는 것을 말한다.

그렇게 하면 반환받지 않고도 주소가 생성된 객체 - 즉 인스턴스? 를 이용할 수 있게 되는 것. 

'낙서장' 카테고리의 다른 글

md 파일 작성하는 법  (0) 2020.05.21
동기화의 의미  (0) 2020.05.15
괜찮은 출판사, 책  (0) 2020.05.11
프로젝트 제작시 폴더 구분  (0) 2020.04.28
자바 네이버 지도 api 사용하기 (프로젝트 대비)  (0) 2020.04.27

TYPE변수를 이용하여 데이터 초기화 하기

CREATE TABLE pl_emp3
as
SELECT empno, ename, sal
FROM emp;

먼저 연습을 위해 다른테이블을 복사한다

 

SET serveroutput ON;

출력을 위해 위 코드를 실행

 

DECLARE
     vno pl_emp3.empno%TYPE;
     vname pl_emp3.ename%TYPE;
     vsal pl_emp3.sal%TYPE;
BEGIN
    SELECT empno, ename, sal INTO vno, vname, vsal
    FROM pl_emp3
    WHERE empno = 7369;
    DBMS_OUTPUT.PUT_LINE(vno||'---'||vname||'---'||vsal);
END;
/

변수를 선언하고 나온 값들을 변수에 넣고 출력한다.

 

위의 코드를 ROWTYPE방식으로 만들어본다

SET serveroutput ON
DECLARE
 vrow pl_emp3%ROWTYPE;
BEGIN
    SELECT * INTO vrow
    FROM pl_emp3
    WHERE empno = 7369;
    DBMS_OUTPUT.PUT_LINE(vrow.empno);
END;
/EMP

 

오라클 반복문 참고

https://coding-factory.tistory.com/452

 

[Oracle] 오라클 반복문 (LOOP, WHILE, FOR)문 사용법 (PL/SQL)

다른언어와 마찬가지로 PL/SQL에서도 반복문을 지원합니다. PL/SQL에서의 반복문 종류는 LOOP문, WHILE문, FOR문이 있습니다. LOOP문 --사용법 LOOP 처리문; EXIT[조건]; END LOOP; --예제 DECLARE NUM1 NUMBER :=..

coding-factory.tistory.com

 

 

오라클에서 커서란

sql문을 실행할 때마다 처리를 위한 메모리를 사용하는데 그것을 커서라고함

(ResultSet이 튜플을 가리키는 커서이듯)

묵시적커서 - 오라클에서 자동으로 만들어지는 변수?

명시적커서 - 사용자가 직접 만들고 관리 사용하는 변수?

 

 

 

 

 

 

 

 

'Database > OracleSQL' 카테고리의 다른 글

오라클 시퀀스 권한주기  (0) 2020.05.15
데이터베이스의 내용을 Json으로 변경하여 웹에 띄우기  (0) 2020.05.14
200507  (0) 2020.05.07
200506  (0) 2020.05.06
데이터베이스 ALL, SOME  (0) 2020.05.06

+ Recent posts