【问题标题】:Java connecting to sql serverJava连接到sql server
【发布时间】:2011-07-28 16:46:09
【问题描述】:

我有这个代码:

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

【问题讨论】:

  • 数据库是否在端口 1433 上启动并运行?如果您转到命令行,如果您执行ping myMachine,您会得到什么(它是否解析为 IP?也就是说,myMachine 是否解析为您可以从运行测试的位置访问的 IP 地址?如果你从命令行执行netstat -an,你看到myMachine:1433 的 TCP 或 UDP 条目吗?也就是说,SqlServer 绑定到该主机名和端口(而不是,比如说,本地主机或 127.0.0.1)?如果确实如此它在你可以到达的地方运行,你能从 SqlServer 配置管理器中用那个用户名和密码连接吗?
  • 如果我执行 netstat -an,我看不到任何端口号为 1433 的东西。当我 ping 我的机器时,我得到这个:Reply from fe80::807e:73b6:47fb:9348%11: time&lt;1ms。我可以使用配置管理器使用用户名登录。
  • @Martjin,你从ping myMachine得到什么?
  • 然后我得到Reply from fe80::807e:73b6:47fb:9348%11: time&lt;1ms
  • support.microsoft.com/kb/914277/en-us中的步骤你做了吗?

标签: java sql-server-2008 database-connection


【解决方案1】:

我明白了。 SQL Service browser 服务未启动。启动此服务后,我可以连接到服务器。

【讨论】:

    猜你喜欢
    • 2021-02-08
    • 2011-07-28
    • 2012-04-21
    • 2014-02-08
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    相关资源
    最近更新 更多