Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用sqlexpress连接Java_Java_Sql_Sql Server 2008_Jdbc - Fatal编程技术网

用sqlexpress连接Java

用sqlexpress连接Java,java,sql,sql-server-2008,jdbc,Java,Sql,Sql Server 2008,Jdbc,我用Java和MySQL设计了一个数据库管理系统。我使用WAMP作为服务器。一切都很完美直到现在 现在,我必须选择sqlexpress而不是WAMP。我对SQL Express一无所知。我已经在默认设置下安装了它 但是,现在我可以通过以下选择连接到Microsoft SQL Server Management Studio中的数据库:, (LORDXAX-PC是我的电脑名) 但是我需要用我的Java程序连接数据库。(我以前成功地使用过JDBC,使用过WAMP) 需要帮助才能成功吗??我试着搜索

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

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

但是,现在我可以通过以下选择连接到Microsoft SQL Server Management Studio中的数据库:, (
LORDXAX-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)
运行:
开始
java.sql.SQLException:网络错误IOException:连接被拒绝:连接
位于net.sourceforge.jtds.jdbc.ConnectionJDBC2。(ConnectionJDBC2.java:417)
位于net.sourceforge.jtds.jdbc.ConnectionJDBC3。(ConnectionJDBC3.java:50)
位于net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:185)
位于java.sql.DriverManager.getConnection(DriverManager.java:582)
位于java.sql.DriverManager.getConnection(DriverManager.java:185)
位于ExpressTest.MAIN.getData(MAIN.java:24)
位于ExpressTest.MAIN.start(MAIN.java:16)
位于ExpressTest.MAIN.MAIN(MAIN.java:10)
原因:java.net.ConnectException:连接被拒绝:连接
位于java.net.PlainSocketImpl.socketConnect(本机方法)
位于java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
位于java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
位于java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
位于java.net.socksocketimpl.connect(socksocketimpl.java:366)
位于java.net.Socket.connect(Socket.java:519)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
结束
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)中
位于java.lang.reflect.Method.invoke(Method.java:597)
位于net.sourceforge.jtds.jdbc.SharedSocket.createSocketForJDBC3(SharedSocket.java:311)
位于net.sourceforge.jtds.jdbc.SharedSocket。(SharedSocket.java:261)
位于net.sourceforge.jtds.jdbc.ConnectionJDBC2。(ConnectionJDBC2.java:318)
... 还有7个
生成成功(总时间:7秒)

  • 在类路径中安装SQL Express的
  • 为您的服务器更新连接字符串(JDBCURL)
  • 更新对SQL Express的查询
  • 步骤2可能要求您通过TCP/IP连接而不是本地管道/命名实例使SQL Express可用


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

    您必须使用能够与SQL Server对话的驱动程序,例如

    在这种情况下,您的代码必须类似于以下内容:

    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的答案。

    首先从microsoft网站下载JDBC驱动程序

    sqljdbc4.jar
    添加到应用程序中

    复制
    c:\windows\system32
    中的
    sqljdbc\u auth.dll
    和java安装的
    /bin
    文件夹

    您可以使用如下连接url:

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

    可能需要重新启动。

    尽管有很多答案。我想给你一个

    当您使用窗口身份验证时

    从更改JTDS URL

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

    另一种选择是:

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

    为您的服务器更新连接字符串(JDBCURL)

    使用
    Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver)

    URL:
    jdbc:sqlserver://localhost;用户=根用户;密码=‌​123;“

    如果仍然存在问题,请坚持。请与

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

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

  • 然后在左边的树上,选择SQLServer2005网络配置->SQLEXPRESS协议->TCP/IP

  • 右键单击并启用它

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

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

  • 重新启动SQL服务


  • 在SQL express中创建一个应用程序用户,并在JDBC URL中使用该用户,而不是使用域帐户凭据,这是一个好主意。顺便说一句,您可以发布用于建立连接的代码片段,以获得社区的进一步帮助。“我尝试搜索并找到了某些内容,但出现了错误。“.什么错误?你能提供代码/努力吗?启用混合模式@那么所有的客户端/用户都将使用相同的用户名和密码组合,并且都具有相同的权限?哦!我认为SQL server层的授权控制与域凭据断开了连接。如果它们相互关联,可能你的方法是正确的。谢谢,我按照你的指示做了。下载JTD并将
    JTDS-1.2.6.JAR
    添加到我的项目库中(我正在使用
    Netbeans
    )。(但我没有做任何其他事情,比如将dll或其他文件复制到
    \windows\*
    目录…)然后我尝试使用上述代码。好吧,第一次,防火墙出现在问p
    private String URL = "jdbc:jtds:sqlserver://localhost/brandix;instance=sqlexpress;useNTLMv2=tru‌​e;domain=workgroup";