close
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;

/*
 * ResultSetMetaData(常使用)
 */
public class ResultSetMetaDataDemo {

	public static void main(String[] args) throws IOException {
		Connection conn = null;
		PreparedStatement pstmt = null;
		BufferedWriter bfw = null;

		try {
			bfw = new BufferedWriter(new FileWriter("D:/JDBC/store/resultsetmetdata.txt"));

			String Url = "jdbc:sqlserver://localhost:1433;databaseName=jdbc";
			conn = DriverManager.getConnection(Url, "sa", "passw0rd");
			String selectdep = "SELECT * FROM department";
			pstmt = conn.prepareStatement(selectdep);
			ResultSet rs = pstmt.executeQuery();
			ResultSetMetaData rsmd = rs.getMetaData();
			int count = rsmd.getColumnCount();// 取得欄位數,select * from..
											  // *代表取得表格內所有欄位數

			/*
			 * 1.getColumnLabel():取得欄位名稱,若有別名則傳回別名,也可用getColumnName(),結果一樣
			 * 2.getColumnType():取得欄位在java.sql.Type定義SQL type的整數值
			 * EX:若欄位的資料型態是varchar,則會傳回varchar在java.sql.Type定義的整數值12
			 * 
			 * 3.getColumnTypeName():取得欄位在DBMS所使用的SQL Type名稱
			 * EX:若欄位的資料型態是varchar,則會傳回varchar
			 *
			 */
			for (int i = 1; i <= count; i++) {
				System.out.print(
						rsmd.getColumnLabel(i) + "(" + rsmd.getColumnType(i) + "," + rsmd.getColumnTypeName(i) + "),");
				
				// 將欄位名稱、型態寫入記事本
				bfw.write(
						rsmd.getColumnLabel(i) + "(" + rsmd.getColumnType(i) + "," + rsmd.getColumnTypeName(i) + "),");
				bfw.flush();
			}
			System.out.print("\n");

			while (rs.next()) {
				for (int i = 1; i <= count; i++) {
					System.out.print(rs.getString(i) + ",");
					bfw.newLine();
					bfw.write(rs.getString(i) + ",");// 將欄位內容寫入記事本
					bfw.flush();
				}
				System.out.print("\n");
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			bfw.close();
			if (conn != null) {
				try {
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}

	}

}

 

arrow
arrow
    全站熱搜

    goodice0728 發表在 痞客邦 留言(0) 人氣()