我用JDBC访问SQLServer数据库是在一个线程中,代码大致如下
public class DBThread extends Thread{       
       public void run(){
Connection conn = null;
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Test","sa","sa");
Statement statement = conn.createStatement(); 
                        //其他处理......
}catch(Exception ex){
ex.printStackTrace();
}
}
}
然后我写了一个测试类,如下:
public class DBTest {
public static void main(String[] args) {
try{
System.out.println("begin");
DBThread dt = new DBThread();
dt.start();
System.in.read();
}catch(Exception ex){
ex.printStackTrace();
}
}
}我运行DBTest,发现线程DBThread执行到conn = DriverManager.getConnection这句的时候就阻塞在那里,直到我敲一个字符让主线程执行完System.in.read();,线程才继续执行,我换了Oracle测试了一下就不存在这个问题,或者我把System.in.read();替换成一个循环等在那里,也不存在刚才的问题,我不知道是不是SQLserver的数据库驱动在DriverManager.getConnection时和System.in.read()有什么冲突或者联系?各位有没有遇到这个问题的,怎么解决呢?多谢!
ps:我在微软的网站上看到最新的jdbc驱动就是sp3了,下载下来也是一样的问题,另外解决问题必须保留System.in.read();