文档章节

Java 连接sql server

harris2016
 harris2016
发布于 2016/07/08 11:50
字数 339
阅读 20
收藏 0

  最近在研究sql server的协议情况,想通过jdbc来操作sql server,打印出连接过程的日志来分析数据包格式的情况。下面是Java连接sql server的简单程序。

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");
    }
}

 

© 著作权归作者所有

harris2016
粉丝 10
博文 54
码字总数 30661
作品 0
杭州
程序员
私信 提问
微软宣布 SQL Server 2019 免费支持 Java

在 2018 年 9 月的时候,微软就宣布与领先的 Java 开源贡献者和发行商 Azul Systems 建立新的合作伙伴关系。这一伙伴关系允许所有 Azure 客户在微软和 Azul 联合提供的支持下,免费使用 Azul...

afterer
07/26
11.4K
26
Android———利用JDBC连接服务器数据库

1、Android平台下与服务器数据库通信的方法 在Android平台下,连接电脑服务器的MySQL、PostgreSQL、Oracle、Sybase、Microsoft SQLServer等数据库管理系统DBMS(database management system),...

xiahuawuyu
2012/10/10
1K
1
JDBC(Java Data Base Connectivity,java数据库连接)

JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。 Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法,JDBC对...

冰雷卡尔
2012/06/03
478
0
java 私塾JDBC笔记整理

java 私塾JDBC笔记整理 一.JDBC是什么? Java DataBase Connection(类似于IO). 二.JDBC怎样实现传输? JDBC利用Driver来连接不同的数据库。如Oracle, SQL Server, MySql , DB2. Driver(驱动)...

luodis
2011/03/03
327
0
MyCAT PreparedStatement 重新入门

概述 相信很多同学在学习 JDBC 时,都碰到 和 。究竟该使用哪个呢?最终很可能是懵里懵懂的看了各种总结,使用 。那么本文,通过 MyCAT 对 的实现对大家能够重新理解下。 本文主要分成两部分...

wangchen1999
2018/05/02
33
0

没有更多内容

加载失败,请刷新页面

加载更多

只需一步,在Spring Boot中统一Restful API返回值格式与统一处理异常

统一返回值 在前后端分离大行其道的今天,有一个统一的返回值格式不仅能使我们的接口看起来更漂亮,而且还可以使前端可以统一处理很多东西,避免很多问题的产生。 比较通用的返回值格式如下:...

晓月寒丶
昨天
59
0
区块链应用到供应链上的好处和实际案例

区块链可以解决供应链中的很多问题,例如记录以及追踪产品。那么使用区块链应用到各产品供应链上到底有什么好处?猎头悬赏平台解优人才网小编给大家做个简单的分享: 使用区块链的最突出的优...

猎头悬赏平台
昨天
28
0
全世界到底有多少软件开发人员?

埃文斯数据公司(Evans Data Corporation) 2019 最新的统计数据(原文)显示,2018 年全球共有 2300 万软件开发人员,预计到 2019 年底这个数字将达到 2640万,到 2023 年达到 2770万。 而来自...

红薯
昨天
65
0
Go 语言基础—— 通道(channel)

通过通信来共享内存(Java是通过共享内存来通信的) 定义 func service() string {time.Sleep(time.Millisecond * 50)return "Done"}func AsyncService() chan string {retCh := mak......

刘一草
昨天
58
0
Apache Flink 零基础入门(一):基础概念解析

Apache Flink 的定义、架构及原理 Apache Flink 是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态或无状态的计算,能够部署在各种集群环境,对各种规模大小的数据进行快速...

Vincent-Duan
昨天
60
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部