Java 鏈接sql server

  最近在研究sql server的協議狀況,想經過jdbc來操做sql server,打印出鏈接過程的日誌來分析數據包格式的狀況。下面是Java鏈接sql server的簡單程序。java

package com.java.dbtest;  
  
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.FileHandler;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;

import org.apache.log4j.PropertyConfigurator;

class SqlServerThreadClient extends Thread {
	
	public void SelectUser() {
		
		Connection conn = null;
    	
		String url = "jdbc:sqlserver://localhost:1433;databaseName=pgbench";
    	String username = "sa";
    	String password = "0000";
    	String sql = "select id, name, age from bigtable";
    	
    	try {
    		Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    		conn = DriverManager.getConnection(url, username, password);
    		PreparedStatement stmt = conn.prepareStatement(sql);
    		ResultSet rs = stmt.executeQuery();
    		while(rs.next()) {
    			int id = rs.getInt("id");
    			String name = rs.getString("name");
    			int age = rs.getInt("age");
    			System.out.println("id:" + id + " name:" + name + " age:" + age);
    		}
    		
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			try {
				if (conn != null)
					conn.rollback();
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		} finally {
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
    }
	
	public void run() {
		long bt = System.nanoTime();
		SelectUser();
		long at = System.nanoTime();
		
		System.out.println("time:" + (at - bt) + " ns, " + (at-bt)/1000000 + " ms, " + (at-bt)/1000000000 + " s");
	}
};

public class TestConnectionSqlServer {
  
    public static void main(String[] args) {
    	PropertyConfigurator.configure("log4j.properites");
    	Handler fh;
		try {
			fh = new FileHandler("./oracle_jdbc_log.log");
			fh.setLevel(Level.ALL);
			fh.setFormatter(new SimpleFormatter());
			Logger.getLogger("").addHandler(fh);
			Logger.getLogger("").setLevel(Level.ALL);
		} catch (SecurityException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		int jobNum = 1;
		int CliNum = 1;
		long bt = 0, at = 0;
		
		bt = System.nanoTime();
		int k = 0;
		for (k = 0; k < jobNum; k++) {
			ArrayList<Thread> ta = new ArrayList<Thread>();
			int i = 0;
			for (i = 0; i < CliNum; ++i) {
				SqlServerThreadClient tc = new SqlServerThreadClient();
				Thread t = new Thread(tc);
				t.start();
				ta.add(t);
			}
			for (i = 0; i < ta.size(); ++i) {
				try {
					ta.get(i).join();
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		at = System.nanoTime();
		long t = at - bt;
		System.out.println("sum Time:" + t + " ns, " + t/1000000 + " ms, " + t/1000000000 + " s");
    }
}
相關文章
相關標籤/搜索