|
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 ! |
|
|