본문 바로가기

개발 이야기/Java

ResultSetMetaData를 활용한 테이블 컬럼 및 데이터 출력

ResultSetMetaData를 활용한 서버 데이터 출력하는 자바 프로그램입니다.


package com.kick.mysql;

import java.io.BufferedReader;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;

;

public class QueryExecutor {
	private static String sqlFile;
	private static int loopCount;

	public void start() throws Exception {
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rset = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection("jdbc:mysql://localhost/test?user=root&password=root");
		} catch (Exception e) {
			System.out.println("Error in connection" + e);
		}
		
		// SQL Loading
		StringBuffer sql = new StringBuffer();
		
		FileReader fr = new FileReader(sqlFile); 
		BufferedReader br = new BufferedReader(fr); 
		String s; 
		while((s = br.readLine()) != null) { 
			sql.append(s).append("\n");
		} 
		fr.close(); 

		String columnHeading = "";
		try {
			pstmt = conn.prepareStatement(sql.toString());
			rset = pstmt.executeQuery();
			if (rset.next()) {
				ResultSetMetaData rsmd = rset.getMetaData();
				int columnCount = rsmd.getColumnCount();
				for (int i = 1; i <= columnCount; i++) {
					columnHeading = columnHeading + "\t"
							+ rsmd.getColumnName(i);
				}
				System.out.println(columnHeading);
				while (rset.next()) {
					for (int i = 1; i <= columnCount; i++) {
						System.out.print("\t" + rset.getString(i));

					}
					System.out.println("\n");
				}
			} else
				System.out.println("There is no records in table");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) throws Exception {
		if (args.length == 0) {
			System.out
					.println("Usage: java QueryExecutor [sql file name] [loop count]");
		}

		sqlFile = args[0];
		loopCount = Integer.parseInt(args[1]);

		new QueryExecutor().start();
	}
}