728x90
반응형

간단한 JDBC 프로그램으로 오라클과 티베로에 접속 해서 데이터를 조회 하는 샘플 소스를 공유 합니다. 

 

JDBC 샘플 소스 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;


public class JDBC_ConnectionTest {

	public static final String TIBERO_JDBC_CLASS_NAME = "com.tmax.tibero.jdbc.TbDriver";
	public static final String ORACLE_JDBC_CLASS_NAME = "oracle.jdbc.driver.OracleDriver";

	public static void main(String args[]) {

		String DB_USER = "tibero";
		String DB_PASSWORD = "tmax";
		String TB_DB_CONNECTION = "jdbc:tibero:thin:@127.0.0.1:17000:tibero";
		String ORA_DB_CONNECTION = "jdbc:oracle:thin:@127.0.0.1:1521:orclcdb";
		
		String DB_TYPE ="oracle";

		try {

			Properties prop = new Properties();
			prop.put("user", DB_USER);
			prop.put("password", DB_PASSWORD);
			Connection conn = null;
			
			if(DB_TYPE.equals("tibero")){
				Class.forName(TIBERO_JDBC_CLASS_NAME);
				conn = DriverManager.getConnection(TB_DB_CONNECTION, prop);
			}else{
				Class.forName(ORACLE_JDBC_CLASS_NAME);
				conn = DriverManager.getConnection(ORA_DB_CONNECTION, prop);
			}
							
			Statement stmt = conn.createStatement();
			
			try {
				stmt.executeQuery("drop table book");
	
			} catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			}
			
			String table =" create table book     \n"  
						+ " (book_id number primary key  \n " 
						+ " ,title varchar(200)  \n " 
						+ " ,category varchar(200)  \n " 
						+ " ,price number    \n " 
						+ " ,insert_date date default current_timestamp \n " 
						+ " )  \n " ;

			stmt.executeQuery(table);
			
			ResultSet rs = null;
			stmt.executeUpdate("insert into book( book_id, title,category,price) values(1,'JDBC program','IT BOOK',20000)");

			rs = stmt.executeQuery("select * From book");
			
			System.out.println("==================== 단건조회 =====================");
			while(rs.next()){
				
				System.out.println(String.format("book_id:[%d],title:[%s],category:[%s],price:[%d],insert_date:[%s]"
						,rs.getInt(1),rs.getString(2),rs.getString(3),rs.getInt(4),rs.getString(5)));
			}
			System.out.println("=============================================");

			/*Table batch insert*/
			PreparedStatement psmt = conn.prepareStatement("insert into book( book_id, title,category,price) values(?,?,?,?)");

			for (int i = 2; i <= 50; i++) {

				psmt.setInt(1, i);
				psmt.setString(2, "JDBC program_" + i);
				psmt.setString(3, "IT BOOK_" + i);
				psmt.setInt(4, 20000 + (i * 100));

				psmt.addBatch();
			}

			psmt.executeBatch();		
			
			
			System.out.println("==================== batch insert 조회 =====================");
			rs = stmt.executeQuery("select * From book");
			while(rs.next()){
				
				System.out.println(String.format("book_id:[%d],title:[%s],category:[%s],price:[%d],insert_date:[%s]"
						,rs.getInt(1),rs.getString(2),rs.getString(3),rs.getInt(4),rs.getString(5)));
			}
			System.out.println("=============================================");
			
			rs.close();
			stmt.close();
			psmt.cancel();
			conn.close();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}


}

jdbc 드라이버 네임 설정

  • 티베로와 오라클 드라이버 명을 설정합니다. .
public static final String TIBERO_JDBC_CLASS_NAME = "com.tmax.tibero.jdbc.TbDriver";
public static final String ORACLE_JDBC_CLASS_NAME = "oracle.jdbc.driver.OracleDriver";

jdbc URL 설정 

  • 티베로와 오라클 URL 을 설정합니다. 
String DB_USER = "tibero";
String DB_PASSWORD = "tmax";
String TB_DB_CONNECTION = "jdbc:tibero:thin:@127.0.0.1:17000:tibero";
String ORA_DB_CONNECTION = "jdbc:oracle:thin:@127.0.0.1:1521:orclcdb";

jdbc Connection 생성 

jdbc 단건 입력 후 조회

jdbc batch insert 후 조회 

PreparedStatement addBatch() 를 이용해 여러건을 한번에 입력후 조회 합니다. 

 

psmt.addBatch()

jdbc connection 종료

테스트 결과 

  • jdbc 컴파일 및 실행 
  • 윈도우와 리눅스 컴파일시 구분자가 다르다 리눅스 ':' , 윈도우=>';'
#윈도우
javac -classpath .;tibero6-jdbc.jar;ojdbc8.jar JDBC_ConnectionTest.java 
java  -classpath .;tibero6-jdbc.jar;ojdbc8.jar JDBC_ConnectionTest 

#리눅스
javac -classpath .:tibero6-jdbc.jar:ojdbc8.jar JDBC_ConnectionTest.java 
java  -classpath .:tibero6-jdbc.jar:ojdbc8.jar JDBC_ConnectionTest
  • 실행결과
==================== 단건조회 =====================
book_id:[1],title:[JDBC program],category:[IT BOOK],price:[20000],insert_date:[2022-04-20 20:48:04.0]
=============================================
==================== batch insert 조회 =====================
book_id:[1],title:[JDBC program],category:[IT BOOK],price:[20000],insert_date:[2022-04-20 20:48:04.0]
book_id:[2],title:[JDBC program_2],category:[IT BOOK_2],price:[20200],insert_date:[2022-04-20 20:48:04.0]
book_id:[3],title:[JDBC program_3],category:[IT BOOK_3],price:[20300],insert_date:[2022-04-20 20:48:04.0]
book_id:[4],title:[JDBC program_4],category:[IT BOOK_4],price:[20400],insert_date:[2022-04-20 20:48:04.0]
book_id:[5],title:[JDBC program_5],category:[IT BOOK_5],price:[20500],insert_date:[2022-04-20 20:48:04.0]
book_id:[6],title:[JDBC program_6],category:[IT BOOK_6],price:[20600],insert_date:[2022-04-20 20:48:04.0]
book_id:[7],title:[JDBC program_7],category:[IT BOOK_7],price:[20700],insert_date:[2022-04-20 20:48:04.0]
book_id:[8],title:[JDBC program_8],category:[IT BOOK_8],price:[20800],insert_date:[2022-04-20 20:48:04.0]
book_id:[9],title:[JDBC program_9],category:[IT BOOK_9],price:[20900],insert_date:[2022-04-20 20:48:04.0]
book_id:[10],title:[JDBC program_10],category:[IT BOOK_10],price:[21000],insert_date:[2022-04-20 20:48:04.0]
book_id:[11],title:[JDBC program_11],category:[IT BOOK_11],price:[21100],insert_date:[2022-04-20 20:48:04.0]
book_id:[12],title:[JDBC program_12],category:[IT BOOK_12],price:[21200],insert_date:[2022-04-20 20:48:04.0]
book_id:[13],title:[JDBC program_13],category:[IT BOOK_13],price:[21300],insert_date:[2022-04-20 20:48:04.0]
book_id:[14],title:[JDBC program_14],category:[IT BOOK_14],price:[21400],insert_date:[2022-04-20 20:48:04.0]
book_id:[15],title:[JDBC program_15],category:[IT BOOK_15],price:[21500],insert_date:[2022-04-20 20:48:04.0]
book_id:[16],title:[JDBC program_16],category:[IT BOOK_16],price:[21600],insert_date:[2022-04-20 20:48:04.0]
book_id:[17],title:[JDBC program_17],category:[IT BOOK_17],price:[21700],insert_date:[2022-04-20 20:48:04.0]
book_id:[18],title:[JDBC program_18],category:[IT BOOK_18],price:[21800],insert_date:[2022-04-20 20:48:04.0]
book_id:[19],title:[JDBC program_19],category:[IT BOOK_19],price:[21900],insert_date:[2022-04-20 20:48:04.0]
book_id:[20],title:[JDBC program_20],category:[IT BOOK_20],price:[22000],insert_date:[2022-04-20 20:48:04.0]
=============================================

 

728x90
반응형

'03.Program > 02.java' 카테고리의 다른 글

[Java basic-Utility] 파일 비교  (0) 2022.03.27
[Java basic-Utility] 디렉토리 파일 리스트 조회  (0) 2022.03.26
Linux OpenJdk 설치  (0) 2022.03.21
728x90
반응형

간단하게 파일 비교 하는 java 소스 공유합니다. 

두개의  텍스트 파일을 비교하는 간단한 코드입니다. 

단점은 원본 파일 대상으로 라인 by 라인으로 비교를 하기 때문에 중간에 비교대상 라인이 다르면 모두 다르게 출력되게 됩니다. ㅠㅠ 

 

소스  파일

package ims;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.TreeMap;

public class FileCompare {

	// 두개 파일 비교
	public static void main(String[] args) throws IOException {
		// String original file = args[0];
		// String compare file = args[1];

		String oldfilename = "D:\\test1.sql";
		String newfilename = "D:\\test2.sql";

		FileCompare comp = new FileCompare();
		String result = comp.compareFile(oldfilename, newfilename);
		if (result.length()>0) {
			String diffFilename =new File(newfilename).getName();
			FileWriter diff = new FileWriter(diffFilename+".error",false);
			System.out.println("file is different");
			System.out.println(String.format("[%s][%s]|[%s] ", "line", "original file", "compare file"));
			System.out.println(result);
			diff.write(result);
			diff.flush();
			diff.close();

		} else {
			System.out.println("file is equal");
			
		}


	}

	public String compareFile(String oldfilename, String newfilename) throws IOException {
		TreeMap<Integer, String> compare = new TreeMap<Integer, String>();
		File oldfile = new File(oldfilename);
		File newfile = new File(newfilename);
		BufferedReader bf = null;
		StringBuffer errorLine = new StringBuffer();
		try {
			bf = new BufferedReader(new FileReader(oldfile));
			int key = 0;
			// old file read
			while (true) {
				String str = bf.readLine();
				if (str == null)
					break;
				compare.put(++key, str);
			}

			bf = new BufferedReader(new FileReader(newfile));
			key = 0;

			// old file vs new file compare

			while (true) {
				String str = bf.readLine();
				if (str == null)
					break;
				if (!str.equals(compare.get(++key))) {
					errorLine.append(String.format("[%d]:[%s]|[%s]\n", key, str, compare.get(key)));
				}

			}

		} catch (IOException E) {
		}
		bf.close();
		return errorLine.toString();
	}

}

 

원본(test1.txt) 비교 대상파일(test2.txt)
DROP TABLE DEPT;
CREATE TABLE DEPT
       (DEPTNO NUMBER(2) ,
DNAME2 VARCHAR2(14) ,
LOC VARCHAR2(13) ) ;
DROP TABLE DEPT;
CREATE TABLE DEPT
       (DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
DNAME VARCHAR2(14) ,
LOC VARCHAR2(13) ) ;

 

실행결과

file is different
[line][original file]|[compare file] 
[3]:[       (DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,]|[       (DEPTNO NUMBER(2) ,]
[4]:[ DNAME VARCHAR2(14) ,]|[ DNAME2 VARCHAR2(14) ,]
728x90
반응형

'03.Program > 02.java' 카테고리의 다른 글

[Java] JDBC 프로그래밍  (0) 2022.04.20
[Java basic-Utility] 디렉토리 파일 리스트 조회  (0) 2022.03.26
Linux OpenJdk 설치  (0) 2022.03.21
728x90
반응형

디렉토리내 파일이 존재 하는지 확인하는 java 코드입니다 .

디렉토리를 조회후 파일이 있는지 확인하고 디렉토리내 또 다른 디렉토리가 존재 한다면 재귀 함수 호출을 통해 

하위 파일 까지 출력 하는 코드 입니다. 

Oracle 샘플 스키마 스크립트를 가지고 테스트해보겠습니다. 

 

import java.io.File;
import java.io.IOException;
import java.security.AccessControlException;
import java.sql.SQLException;
import java.util.ArrayList;

public class DirectoryFileList {

	public static void main(String[] args)
			throws AccessControlException, SQLException, ClassNotFoundException, IOException {

		String path = "D:\\998.Tmp\\db-sample-schemas-19.2\\db-sample-schemas-19.2";

		ArrayList al = new ArrayList<String>();
		subDirList(path, al);

	}

	public static void subDirList(String source, ArrayList<String> list) {

		File dir = new File(source);
		File[] fileList = dir.listFiles();

		try {

			for (int i = 0; i < fileList.length; i++) {

				File file = fileList[i];

				if (file.isFile()) {

					// 파일이 있다면 파일 이름 출력
					System.out.println("\t File name :" + file.getAbsoluteFile());
					list.add(file.getParent() + File.separator + file.getName());

				} else if (file.isDirectory()) {

					System.out.println("Directory name:" + file.getName());
					// 서브디렉토리가 존재하면 재귀적 방법으로 다시 탐색
					list.add(file.getParent() + File.separator + file.getName());
					subDirList(file.getCanonicalPath().toString(), list);

				}

			}

		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}

 

실행결과

Directory name:bus_intelligence
 File name :D:\998.Tmp\db-sample-schemas-19.2\db-sample-schemas-19.2\bus_intelligence\bi_main.sql
 File name :D:\998.Tmp\db-sample-schemas-19.2\db-sample-schemas-19.2\bus_intelligence\bi_oe_pr.sql
 File name :D:\998.Tmp\db-sample-schemas-19.2\db-sample-schemas-19.2\bus_intelligence\bi_sh_pr.sql
 File name :D:\998.Tmp\db-sample-schemas-19.2\db-sample-schemas-19.2\bus_intelligence\bi_views.sql
 File name :D:\998.Tmp\db-sample-schemas-19.2\db-sample-schemas-19.2\CONTRIBUTING.md
Directory name:customer_orders
 File name :D:\998.Tmp\db-sample-schemas-19.2\db-sample-schemas-19.2\customer_orders\co_ddl.sql
 File name :D:\998.Tmp\db-sample-schemas-19.2\db-sample-schemas-19.2\customer_orders\co_dml.sql
 File name :D:\998.Tmp\db-sample-schemas-19.2\db-sample-schemas-19.2\customer_orders\co_drop_objects.sql
 File name :D:\998.Tmp\db-sample-schemas-19.2\db-sample-schemas-19.2\customer_orders\co_drop_user.sql
 File name :D:\998.Tmp\db-sample-schemas-19.2\db-sample-schemas-19.2\customer_orders\co_main.sql
 File name :D:\998.Tmp\db-sample-schemas-19.2\db-sample-schemas-19.2\customer_orders\co_set_identity_starts.sql
 File name :D:\998.Tmp\db-sample-schemas-19.2\db-sample-schemas-19.2\customer_orders\co_user.sql
 File name :D:\998.Tmp\db-sample-schemas-19.2\db-sample-schemas-19.2\customer_orders\customers.sql
 File name :D:\998.Tmp\db-sample-schemas-19.2\db-sample-schemas-19.2\customer_orders\orders.sql
 File name :D:\998.Tmp\db-sample-schemas-19.2\db-sample-schemas-19.2\customer_orders\order_items.sql
 File name :D:\998.Tmp\db-sample-schemas-19.2\db-sample-schemas-19.2\customer_orders\products.sql
 File name :D:\998.Tmp\db-sample-schemas-19.2\db-sample-schemas-19.2\customer_orders\README.md
 File name :D:\998.Tmp\db-sample-schemas-19.2\db-sample-schemas-19.2\customer_orders\README.txt
 File name :D:\998.Tmp\db-sample-schemas-19.2\db-sample-schemas-19.2\customer_orders\sample_queries.sql
 File name :D:\998.Tmp\db-sample-schemas-19.2\db-sample-schemas-19.2\customer_orders\stores.sql
 File name :D:\998.Tmp\db-sample-schemas-19.2\db-sample-schemas-19.2\drop_sch.sql
Directory name:human_resources
 File name :D:\998.Tmp\db-sample-schemas-19.2\db-sample-schemas-19.2\human_resources\hr_analz.sql
 File name :D:\998.Tmp\db-sample-schemas-19.2\db-sample-schemas-19.2\human_resources\hr_code.sql

.
728x90
반응형

'03.Program > 02.java' 카테고리의 다른 글

[Java] JDBC 프로그래밍  (0) 2022.04.20
[Java basic-Utility] 파일 비교  (0) 2022.03.27
Linux OpenJdk 설치  (0) 2022.03.21
728x90
반응형

리눅스에서 OpenJdk 설치하는 방법에 대해 소개 하고 설치된 버전을 손쉽게 변경하는 방법에대해 알아보겠습니다. 

java 설치 (JDK: Java Development Kit: javac)

jdk 설치 리스트 확인 

yum list java*jdk-devel

yum install java-1.8.0-openjdk-devel.x86_64

 

JRE 설치( Java Runtime Environment:java)

 

yum list java*jdk 

yum install java-1.8.0-openjdk.x86_64

 

java version 변경

  • alternatives --config [java/javac] 명령어 수행 후  변경하고자 하는 번호를 선택 하면 됩니다.

 

$ alternatives --config java

2 개의 프로그램이 'java'를 제공합니다.

  선택    명령
-----------------------------------------------
   1           java-1.7.0-openjdk.x86_64 (/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64/jre/bin/java)
*+ 2           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el7_9.x86_64/jre/bin/java)


 

javac 버전 변경

 alternatives --config javac

2 개의 프로그램이 'javac'를 제공합니다.

  선택    명령
-----------------------------------------------
*+ 1           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.302.b08-0.el7_9.x86_64/bin/javac)
   2           java-1.7.0-openjdk.x86_64 (/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64/bin/javac)
728x90
반응형

'03.Program > 02.java' 카테고리의 다른 글

[Java] JDBC 프로그래밍  (0) 2022.04.20
[Java basic-Utility] 파일 비교  (0) 2022.03.27
[Java basic-Utility] 디렉토리 파일 리스트 조회  (0) 2022.03.26

+ Recent posts