2011-04-03 125 views
2

我有这样的代码:的Java连接到SQL Server

try 
    { 
     Class.forName("net.sourceforge.jtds.jdbc.Driver"); 

     Connection conn = DriverManager.getConnection(
      "jdbc:jtds:sqlserver://myMachine:1433/myDB;instance=sql2008;user=myUserName;password=myPassword;" 
     ); 

     System.out.println("connected"); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 

这是例外,我得到:

Unable to get information from SQL Server: myMachine. 
     at net.sourceforge.jtds.jdbc.MSSqlServerInfo.<init>(MSSqlServerInfo.java:97) 
     at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:276) 
     at net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3.java:50) 
     at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184) 
     at java.sql.DriverManager.getConnection(DriverManager.java:582) 
     at java.sql.DriverManager.getConnection(DriverManager.java:207) 
     at Library.MusicItem.Save(MusicItem.java:22) 
     at AddMusicForm.jButton1ActionPerformed(AddMusicForm.java:86) 
     at AddMusicForm.access$000(AddMusicForm.java:17) 
     at AddMusicForm$1.actionPerformed(AddMusicForm.java:45) 
     at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) 
     at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) 
     at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) 
     at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) 
     at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) 
     at java.awt.Component.processMouseEvent(Component.java:6289) 
     at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) 
     at java.awt.Component.processEvent(Component.java:6054) 
     at java.awt.Container.processEvent(Container.java:2041) 
     at java.awt.Component.dispatchEventImpl(Component.java:4652) 
     at java.awt.Container.dispatchEventImpl(Container.java:2099) 
     at java.awt.Component.dispatchEvent(Component.java:4482) 
     at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577) 
     at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) 
     at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) 
     at java.awt.Container.dispatchEventImpl(Container.java:2085) 
     at java.awt.Window.dispatchEventImpl(Window.java:2478) 
     at java.awt.Component.dispatchEvent(Component.java:4482) 
     at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644) 
     at java.awt.EventQueue.access$000(EventQueue.java:85) 
     at java.awt.EventQueue$1.run(EventQueue.java:603) 
     at java.awt.EventQueue$1.run(EventQueue.java:601) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
     at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) 
     at java.awt.EventQueue$2.run(EventQueue.java:617) 
     at java.awt.EventQueue$2.run(EventQueue.java:615) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
     at java.awt.EventQueue.dispatchEvent(EventQueue.java:614) 
     at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) 
     at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) 
     at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) 
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 
     at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 
     at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) 

在SQL配置管理器中我已经设置TCP/IP,命名管道,共享内存并将VIA设置为启用。

我已验证提供的用户名和密码是否正确。端口号也是正确的。

为什么我得到这个错误以及如何解决这个问题?

PS:我正在使用sql server 2008 express

+1

数据库是否在1433端口上运行?如果你进入命令行,如果你使用'ping myMachine',你会得到什么(它是否解析为IP?也就是说,myMachine是否解析为可以从运行测试的地方访问的IP地址?如果你从命令行执行'netstat -an',你会看到'myMachine:1433'的TCP或UDP条目吗?也就是说,SqlServer绑定到该主机名和端口(而不是本地主机或127.0。 0.1)?如果确实在运行,你可以在哪里找到它,你可以用SqlServer Config Manager连接那个用户名和pwd吗? – 2011-04-03 16:55:43

+0

如果我做了netstat -an,我没有看到任何端口号为1433的东西。当我ping我的机器我得到这个:'回复从fe80 :: 807e:73b6:47fb:9348%11:time <1ms'。我可以使用配置管理器的用户名登录 – Martijn 2011-04-03 17:02:47

+0

@Martjin,你从'ping myMachine '? – 2011-04-03 17:24:16

回答

11

我明白了。 SQL Service browser服务未启动。在我开始这项服务后,我可以连接到服务器。

+0

也适用于SQL Server 2012。 – quantum 2015-08-24 14:04:05