WTF, MS JDBC Driver for SQL Server 2008

WTF = What Fuck ...

今天被SQL Server 2008整的胸闷!

现场连接数据库 ok

SQLDeveloper工具链接数据库 ok

eclipse 中跑项目链接数据库, 卡住, 转菊花。

 

错误现象:

 Initializing connection provider: org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider 

由于现场没有问题,所以没有考虑数据库驱动的问题。

列了个checklist, 依次检查环境:

  • SQL Sever 2008 主机是否能ping同
  • telnet 1433 接口是否ok
  • 主机 SQL Browser 是否开启
  • Client链接是否采用网络协议
  • TCP/IP 是否开启, 且端口是否是1433
检查一番后,都ok.
无奈!

写个Unit Test 看看:
package db;


import static org.junit.Assert.*;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import org.junit.*;


public class DBConnTest {
	final String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
	final String user = "sa";
	final String password = "1";
	
	Connection conn = null;
	
	public @Before void init() {
		conn = null;
	}
	
	public @After void close() {
		try {
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	public @Test void connect_uv() {
		System.out.println("connect userverify...");
		String url = "jdbc:sqlserver://192.168.1.19:1433;DatabaseName=dyuserverify20_rugao";			
		
		try {
			Class.forName(driver);
			conn = DriverManager.getConnection(url, user, password);
			assertNotNull(conn);
		} catch (ClassNotFoundException e) {
			fail(e.getMessage());
		} catch (SQLException e) {
			fail(e.getMessage());
		}
	}
	
}
 
依然卡住。

到这里, 开始怀疑是驱动的问题。
  • SQL Developer工具用的是: jtds.jar, 连接2008没问题
  • 项目驱动是: sqljdbc.jar, 连接2008卡住

驱动换成 jtds.jar 再试:
package db;


import static org.junit.Assert.*;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

import org.junit.*;


public class DBConnTest {
	final String driver = "net.sourceforge.jtds.jdbc.Driver";
	final String user = "sa";
	final String password = "1";
	
	Connection conn = null;
	
	public @Before void init() {
		conn = null;
	}
	
	public @After void close() {
		try {
			conn.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	public @Test void connect_uv() {
		System.out.println("connect userverify...");
		String url = "jdbc:jtds:sqlserver://192.168.1.19:1433/dyuserverify20_rugao";			
		
		try {
			Class.forName(driver);
			conn = DriverManager.getConnection(url, user, password);
			assertNotNull(conn);
		} catch (ClassNotFoundException e) {
			fail(e.getMessage());
		} catch (SQLException e) {
			fail(e.getMessage());
		}
	}
	
}
 
跑通!

再将项目中的配置换成 jtds 的方式, “转菊花”的问题解决!

P.S: 
为什么现场采用 sqljdbc.jar 链 2008没问题! WTF MS !
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值