728x90
728x90

preparedstatement 10

자바 마리아디비 문자형 데이터 타입(mediumtext, longtext) PreparedStatement 처리 3 - Java MariaDB String Data Types PreparedStatement

CLOB(Character large object)은 Oracle에서 아주 긴 문자열 데이터를 저장할 수 있는 데이터 타입이다. 이 타입은 테이블 자체에서 저장되지 않고 별도의 위치에 저장됩니다. 이처럼 MariaDB에서도 아주 긴 문자열 데이터를 저장할 수 있는 MEDIUMTEXT와 LONGTEXT가 있습니다. ​ ​ MEDIUMTEXT - 중간 크기의 텍스트 (TEXT 보다는 크고 LONGTEXT보다 작아서 중간 크기) ​ MEDIUMTEXT [CHARACTER SET charset_name] [COLLATE collation_name] 최대 길이는 16,777,215입니다. (1 character = 1Byte) ​ 유효 최대 길이는 사용되는 Charset에 따라 달라집니다. Charset이 UTF..

자바 마리아디비 문자형 데이터 타입(tinytext, text) PreparedStatement 처리 2 - Java MariaDB String Data Types PreparedStatement

이어서 MariaDB(마리아디비)에서 String Data Types(문자형 데이터 타입)에서 TEXT들은 PreparedStatement에서 어떤 메소드로 값으로 설정해야 하는지 확인해 보겠습니다. ​ ​ TINYTEXT - 아주 작은 텍스트 ​ TINYTEXT [CHARACTER SET charset_name] [COLLATE collation_name] 최대 길이는 255입니다. (1 character = 1Byte) ​ 유효 최대 길이는 사용되는 Charset에 따라 달라집니다. Charset이 UTF8이면 한글은 문자당 최대 3Byte가 필요함으로 한글만 입력할 경우 최대 유효 최대 길이는 85입니다. 입력된 문자열에 멀티바이트 문자(한글)가 포함된 경우 유효 최대 길이가 짧아지는 것을 고려해야..

자바 마리아디비 문자형 데이터 타입(char, varchar) PreparedStatement 처리 1 - Java MariaDB String Data Types PreparedStatement

MariaDB(마리아디비)에서 String Data Types(문자형 데이터 타입)별로 PreparedStatement에서 어떤 메소드로 값으로 설정해야 하는지 확인해 보겠습니다. ​ CHAR - 고정 길이 문자열(fixed-length string) ​ CHAR(M) Range(길이) : 0 ~ 127 ​ (M)은 Byte가 아닌 문자 길이(수)입니다. 저장할 때 지정된 길이(M)만큼 공백이 항상 오른쪽으로 채워집니다. (M)을 설정하지 않으면 1로 설정됩니다. CREATE TABLE DAT_TEST10_TB ( COL_CHAR1 char(1), COL_CHAR2 char(1), COL_CHAR3 char(10) ) DEFAULT CHARSET=utf8; String query = "INSERT INT..

자바 마리아디비 숫자형 데이터 타입(bigint, decimal, float, double, bit) PreparedStatement 처리 2 - Java MariaDB Numeric Data Types PreparedStatement

이어서 MariaDB(마리아디비)에서 Numeric Data Types(숫자형 데이터 타입)에서 큰 정수와 실수들은 PreparedStatement에서 어떤 메소드로 값으로 설정해야 하는지 확인해 보겠습니다. ​ ​ BIGINT - 큰 정수(large integer) ​ BIGINT(M) Range(범위) : -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 ​ BIGINT(M) UNSIGNED BIGINT(M) UNSIGNED ZEROFILL Range(범위) : 0 ~ 18,446,744,073,709,551,615 ​ (M)을 설정하지 않으면 SIGNED은 음수 기호를 포함해서 20로 UNSIGNED (ZEROFILL)은 20으로 설정됩니다. CREA..

자바 마리아디비 숫자형 데이터 타입(tinyint, smallint, mediumint, int/integer) PreparedStatement 처리 1 - Java MariaDB Numeric Data Types PreparedStatement

MariaDB(마리아디비)에서 Numeric Data Types(숫자형 데이터 타입)별로 PreparedStatement에서 어떤 메소드로 값으로 설정해야 하는지 확인해 보겠습니다. ​ Numeric Data Types(숫자형 데이터 타입)의 키워드는 다음과 같습니다. SIGNED : 부호가 있는 숫자 (음수를 표현할 수 있습니다.) ex) -15, 15 UNSIGNED : 부호가 없는 숫자 (음수를 표시할 수 없습니다.) ex) 15 UNSIGNED ZEROFILL : 부호가 없는 숫자이고 문자로 가져올 때 지정된 길이로 숫자 앞에 "0"를 채웁니다. ex) 015 ​ Numeric Data Types(숫자형 데이터 타입)에서 (M)은 ZEROFILL 타입에서 사용하는 숫자의 최대 표시 너비입니다. 부..

자바 제네릭 메소드와 리플렉션을 이용한 자동 PreparedStatement 생성 3 - Java Generic Method Reflection PreparedStatement

세번째 ResultSet 객체에서 여러개의 행(row)를 받아 객체로 생성하고 리스트 객체로 전달하는 메소드인 executeQueryList()메소드를 생성하겠습니다. ​ PreparedStatement에서 사용되는 쿼리문 SELECT MBR_ID AS id, MBR_NM AS name FROM MBR_ACCOUNT_TB LIMIT 0, 10 쿼리문처럼 조건 없이 전체를 카운트 할 수 있어 전달되는 객체가 없을 수 있습니다. ​ executeQueryList()메소드는executeQueryOne()메소드와 동일하지만 결과가 리스트 객체로 전달됩니다. ​ 데이터베이스 컨넥션 객체를 가져옵니다. Connection connection = getConnection(); createPreparedStatemen..

자바 제네릭 메소드와 리플렉션을 이용한 자동 PreparedStatement 생성 1 - Java Generic Method Reflection PreparedStatement

PreparedStatement 자동 생성과 실행으로 DAO에서는 쿼리문만 작성하게 되었습니다. 또한 반복적인 코드를 줄임으로써 개발 시간이 단축되었습니다. ​ 이어서 PreparedStatement에서 Select 쿼리문을 처리하는 메소드를 만들어 보겠습니다. ​ Select 쿼리문도 Insert, Update, Delete 쿼리문처럼 쿼리를 실행하지만 쿼리 결과는 ResultSet 객체로 받습니다. 또한 Select 쿼리문의 결과에는 한개 또는 여러개의 행(row)이 올 수 있고 한 개의 행(row)에 한 개의 컬럼(column)만 올 수 있습니다. ​ 그래서 Select 쿼리 처리 결과에 따라 메소드를 구분하여 만들어야 합니다. 1. ResultSet 객체에서 한개의 행(row)를 받아 객체로 생성..

자바 패턴 매치와 리플렉션을 이용한 자동 PreparedStatement 생성 - Java Pattern.matcher Reflection PreparedStatement

이전 "자바 PreparedStatement CRUD"를 통해 PreparedStatement를 이용하여 CRUD(Create, Read, Update, Delete)쿼리문을 처리하였습니다. 그러나 코드를 보면 반복적인 작업이 많이 있습니다. ​ 그래서 MyBatis(마이바티스)처럼 쿼리문에 "#{}"으로 파라미터를 입력하고 전달되는 객체를 이용해 자동으로 파라미터를 처리하여 PreparedStatement를 생성하게 하겠습니다. ​ 이전에도 PreparedStatement에 "?"의 순서대로 전달되는 객체의 맴버 필드 값을 설정하였습니다. ​ PreparedStatement에서 Select 쿼리문은 executeQuery()메소드로 실행되고 ResultSet객체로 쿼리 결과를 받습니다. 그리고 Inse..

자바 PreparedStatement CRUD - Java PreparedStatement CRUD(Create, Read, Update, Delete)

"자바 어노테이션으로 데이터 액세스 객체 만들기 1~5"를 통해 DAO(Data Access Object) 인터페이스(interface)와 구현체(implements)를 만들어 보았고 "자바 데이터베이스 매니저 시큐어 코딩"를 통해 "Statement"에서 "PreparedStatement"로 수정해보았습니다. ​ 이번에는 "PreparedStatement"를 이용하여 CRUD(Create, Read, Update, Delete)에 대한 인터페이스(interface)와 구현체(implements)를 개발하겠습니다. ​ 이후에는 쿼리문 파라미터 치환과 Resultset를 객체로 변환에 대해 알아보겠습니다. ​ "CRUD"는 데이터처리 방식인 Create(생성/등록/추가), Read(읽기/조회), Updat..

자바 데이터베이스 매니저 시큐어 코딩 - Java Database Manager Secure Coding (PreparedStatement), 이클립스(Eclipse)

이전 자바 데이터베이스 매니저 만들기(https://carrotweb.tistory.com/70)에서 쿼리(query)문 실행을 위해서 "createStatement"매소드를 이용하여 정적인 쿼리(query)문을 사용하였습니다. 이전에도 언급한 것처럼 정적인 쿼리(query)문은 "SQL Injection"으로 보안상 취약점이 있습니다. ​ 실제로 "SQL Injection"를 테스트 해보고 안정적인 코딩을 위해 "PreparedStatement"를 이용하여 쿼리(query)문을 실행 할 수 있게 하겠습니다. ​ "JAVA 시큐어코딩 가이드"의 "제1절 입력 데이터 검증 및 표현"에서 "1. SQL 삽입(Improper Neutralization of Special Elements used in an S..

728x90
728x90