2011-11-12 49 views
1

刚刚完成设置并运行我的代码。但java不会抛出任何错误,所以我不知道什么是错的。这里是我的设置 win7 - sql server 2008 express r2 - eclipse - 一台计算机上的所有东西(本地主机)。这里是代码:执行停止,jdbc连接期间没有发生错误

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
    String connectionUrl = "jdbc:sqlserver://localhost:1433;" + 
     "databaseName=MyDatabase;user=sa;password=test;"; 
    System.out.println("AAA"); 

    Connection conn = DriverManager.getConnection(connectionUrl); 

    System.out.println("BBB"); 

    Statement stmt = conn.createStatement(); 
    ResultSet rs = stmt.executeQuery("SELECT * FROM Friends"); 

等到打印AAA没有错误抛出。然后没有任何反应没有错误和BBB从不打印。连接conn声明出错了,但什么?根本没有错误信息,我现在该看什么?由于

回答

1

尝试缠绕一个try/catch代码,如下图所示:

try { 
    //your code here 
} catch(SQLException e) { 
    e.printStackTrace(); 
} 

在该“抓”你应该看到正在发生的事情有些细节。

对JDBC一个很好的教程位于http://www.jdbc-tutorial.com

祝你好运!

+0

我其实已经有了。但没有发布。抱歉。接下来是什么? – emacs

+0

发布您收到的任何异常的堆栈跟踪。 – Perception

+0

是的,发布堆栈跟踪,以便我们可以更好地了解ya发生了什么。 – Mike

1

尝试检查connectionUrl的值是否正确。您在致电DriverManager.getConnection(connectionUrl) 时登录到数据库超时的等待时间为DriverManager.getLoginTimeout()。尝试检查该值。

0

我的猜测是你的sql服务器没有运行,并且windows正在等待它出现。

确认sql服务器正在运行,并确认您可以ping localhost

+0

你好,我检查了我的服务SQL Server(SQLEXPRESS),它是开始。同样在我的sql网络配置下,我有以下几点:SQLEXPRESS-> TCP/IP Enabled的协议。当我右键单击 - >属性 - >然后转到IP地址选项卡,我有所有IP活动和启用设置为是。然而,所有这些IP地址都是一些奇怪的长十六进制数字fe80 :: a0aa:58f5:b2ed:fb79%21。这可能是问题吗?另外我关闭了Windows防火墙。 – emacs

0

在这个问题上花费了超过8小时以上后,这一切都归结为愚蠢的MS jdbc驱动程序!我不能相信他们自己的驱动程序不要使用他们的软件!我的天啊。所以经过大量搜索后,它使用jtds jdbc驱动程序,它的工作原理!叹。远离MS jdbc驱动程序!我希望这可以帮助他人节省一些时间。

+0

大声笑,很抱歉听到,但至少你发现了这个问题! MS JDBC驱动程序不能使用他们自己的数据库,呵呵?我为什么不感到惊讶... – Mike