2

我设计了一个使用 Java 和 MySQL 的数据库管理系统。我使用WAMP作为服务器。一切都很完美……直到现在……

现在,我必须选择SQL Express而不是WAMP。我对 SQL Express 一无所知。我已经在默认情况下安装了它。

但是,现在我可以通过以下选择连接到Microsoft SQL Server Management StudioLORDXAX-PC中的数据库,(是我的计算机名称)

在此处输入图像描述

但我需要将数据库与我的 Java 程序连接起来。(我之前已经成功使用过JDBC,与 WAMP 一起使用)

需要帮助才能成功??我试过搜索发现某些东西,但它给出了错误。有人可以为我提供干净的说明..

任何帮助表示赞赏。谢谢!


编辑 (2)

这是演示问题的完整代码..

package ExpressTest;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;

public class MAIN {

    public static void main(String[] args) {
        new MAIN().start();
    }

    private void start() {
        System.out.println("START");
        String query = "SELECT * FROM logindata";
        getData(query);
        System.out.println("END");
    }

    public ResultSet getData(String query) {
        Connection CON = null;
        try {
            Class.forName("net.sourceforge.jtds.jdbc.Driver");
            CON = DriverManager.getConnection(URL, USER, PASS);
            RESULT = CON.createStatement().executeQuery(query);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return RESULT;
    }
    private String URL = "jdbc:jtds:sqlserver://localhost/brandix;instance=sqlexpress";
    private String USER = "";
    private String PASS = "";
    private static ResultSet RESULT;
}

这是完整的NetBeans输出。

run:
START
java.sql.SQLException: Network error IOException: Connection refused: connect
    at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:417)
    at net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3.java:50)
    at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:185)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:185)
    at ExpressTest.MAIN.getData(MAIN.java:24)
    at ExpressTest.MAIN.start(MAIN.java:16)
    at ExpressTest.MAIN.main(MAIN.java:10)
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:519)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
END
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at net.sourceforge.jtds.jdbc.SharedSocket.createSocketForJDBC3(SharedSocket.java:311)
    at net.sourceforge.jtds.jdbc.SharedSocket.<init>(SharedSocket.java:261)
    at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:318)
    ... 7 more
BUILD SUCCESSFUL (total time: 7 seconds)
4

4 回答 4

6

虽然有很多答案。我想给一个。

当您使用窗口身份验证时。

更改 JTDS URL 从

private String URL = "jdbc:jtds:sqlserver://localhost/brandix;instance=sqlexpress";

private String URL = "jdbc:jtds:sqlserver://localhost/brandix;instance=sqlexpress;useNTLMv2=tru‌​e;domain=workgroup";

或 另一种选择是:

下载 [Microsoft JDBC 驱动程序][1] 而不是 JTDS。添加sqljdbc4.jar到您的类路径。

更新服务器的连接字符串(JDBC URL)

利用Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);

网址:jdbc:sqlserver://localhost;user=root;password=‌​123;"

如果仍然有问题,请坚持。检查,

启用默认禁用的 TCP/IP 网络协议,并将 TCP/IP 端口设置为 1433,这也是默认端口号。

  1. 打开 SQL Server 配置管理器开始 -> Microsoft SQL Server 2008 -> 配置工具 -> SQL Server 配置管理器

  2. 然后在左边的树上。选择 SQL Server 2005 网络配置-> SQLEXPRESS 协议-> TCP/IP。

  3. 右键单击并启用它。

  4. 双击 TCP/IP 会出现一个窗口框。单击“IP 地址”选项卡

  5. 将 TCP 端口值设置为 1433,然后单击应用

  6. 重新启动 SQL 服务。

于 2012-08-24T04:43:26.580 回答
2

您将不得不使用能够与 SQL Server 通信的驱动程序,例如jTDS

现在对于这种情况,您的代码必须与此类似:

public ResultSet getData(String query) {
    Connection CON = null;
    try {
        Class.forName("net.sourceforge.jtds.jdbc.Driver");
        CON = DriverManager.getConnection(URL, USER, PASS);
        RESULT = CON.createStatement().executeQuery(query);
    } catch (Exception ex) {
        System.err.println(">> " + ex.getMessage());
    }
    return RESULT;
}
private String URL = "jdbc:jtds:sqlserver://servername/brandix;instance=sqlexpress";
private String USER = "";
private String PASS = "";
private static ResultSet RESULT;

另请参阅@SPee 的答案。

于 2012-08-22T12:16:28.127 回答
1

首先从微软网站下载 JDBC-Driver。

http://msdn.microsoft.com/en-us/sqlserver/aa937724.aspx

添加sqljdbc4.jar到您的应用程序。

复制 java 安装的sqljdbc_auth.dllinc:\windows\system32/bin文件夹。

您可以使用这样的连接网址:

jdbc:sqlserver://D-PC-IT-02;instanceName=LOKALEINSTANZ;databaseName=MyDatabase;integratedSecurity=true; 

可能需要重新启动。

于 2012-08-22T13:47:44.470 回答
1

基本上你的步骤是

  1. 将SQL Express的Microsoft JDBC 驱动程序安装到您的类路径中
  2. 更新服务器的连接字符串(JDBC URL)
  3. 更新 SQL Express 查询

第 2 步可能需要您通过 TCP/IP 连接而不是本地管道/命名实例使 SQL Express 可用。

第 3 步可能是最难的。您必须检查您的查询是否对 SQL Express 有效,使用具有正确参数的函数。对于数据库管理系统,您还必须更新所有查询以进行用户管理、表管理等。

于 2012-08-22T12:11:42.377 回答