Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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
Java 如何生成JDBC数据库URL?_Java_Sql Server_Database_Jdbc - Fatal编程技术网

Java 如何生成JDBC数据库URL?

Java 如何生成JDBC数据库URL?,java,sql-server,database,jdbc,Java,Sql Server,Database,Jdbc,今天我已经研究了大约3个小时,我觉得我已经接近了,但我有几个问题。到目前为止,我找到的最好的信息来源是:,但它并没有回答我所有的问题 一点背景:我使用的是Microsoft SQL Server 2014,我已经验证了IP地址127.0.0.1是活动的,并且已使用端口1433启用。我在同一台机器上通过SQL Server程序连接到数据库没有问题,但我正在尝试通过我正在编写的Java程序连接,它当前会出现以下错误:com.microsoft.sqlserver.jdbc.SQLServerExce

今天我已经研究了大约3个小时,我觉得我已经接近了,但我有几个问题。到目前为止,我找到的最好的信息来源是:,但它并没有回答我所有的问题

一点背景:我使用的是Microsoft SQL Server 2014,我已经验证了IP地址127.0.0.1是活动的,并且已使用端口1433启用。我在同一台机器上通过SQL Server程序连接到数据库没有问题,但我正在尝试通过我正在编写的Java程序连接,它当前会出现以下错误:com.microsoft.sqlserver.jdbc.SQLServerException:端口号1433/R2M_数据库无效。我对此感到困惑,因为我知道端口1433是正确的,并且我知道我要连接的数据库称为R2M_数据库。下面是我的问题和我的源代码

1.“mysql”和“sqlserver”子脚本之间有什么区别,我如何知道使用哪一个?(我很确定我应该使用sqlserver,但以防万一)

2.)如何确保使用正确的主机名?(我很确定127.0.0.1/localhost是我应该使用的,但是我怎样才能从其他机器上运行这个程序来访问数据库?)

3.)是否存在任何可能导致此问题的外部问题,如防火墙或密码要求?(我相当肯定用户名和密码是正确的,因为它们是我在Microsoft SQL Server 2014中成功获得连接所使用的用户名和密码)

编辑:

我做了一个轻微的语法更改(;databaseName=而不是/),现在我遇到了以下错误:

com.microsoft.sqlserver.jdbc.SQLServerException:用户“RSquaredMacro”登录失败。客户连接ID:35281a40-0f87-42e4-bc46-b9a81a371529

  • mysql是一个完全不同的数据库服务器。不要将其用于SQL Server

  • 您需要为数据库服务器提供公共地址。只要所有客户端都能看到,ip或主机名都可以。如果你没有,你可以尝试使用dyndns.org或类似的网站。注意:您的客户端仍然需要能够访问网络上的服务器(潜在的防火墙问题)。如果不了解你的情况,很难说更多

  • 防火墙可能是一个问题,但对于localhost来说,这不太可能。我猜问题在于TCP/IP侦听器、用户名、密码或数据库名称设置

  • 下面是一个链接,其中包含有关构建JDBC连接字符串的更多信息:

    还有一些旁注:

  • 您不需要包括1433端口号

  • 打印整个堆栈跟踪将帮助您进行调试。 (见下面的代码)

  • 您应该为连接声明一个变量,并确保 关门了。例如:

    Connection c = null;
    try {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        c = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433/R2M_Database", userName, password);
        new ScriptRunner(c).runScript(new BufferedReader(new FileReader(script)));
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if (c != null) try { c.close(); } catch (Exception e) { }
    }
    

  • 事实证明,问题完全在于我的JDBCURL的格式。我遇到的问题是,不同的子程序的URL-s具有不同的语法,但sqlserver协议的语法(以及如何查找每个部分)如下所示:

    "jdbc:sqlserver://" + serverName + ";database=" + databaseName
    
    1.)服务器名称:要查找服务器名称,请连接到Microsoft SQL server(这些说明基于SQL server 2014),然后查看右侧的“属性”窗格。在顶部的组合框中选择“当前连接参数”,然后在“连接详细信息”下查看“服务器名称”字段

    2.)databaseName:这个非常简单,因为它是您要从中访问数据的数据库的名称。即使您登录的用户列在“master”数据库下,您也不必登录“master”,而是可以使用您想要的任何数据库,只要您登录的用户有权执行您想要完成的任务


    最后:下面是帮助我最终解决问题的链接,详细介绍如下:

    如果连接有问题,最可能的问题是您尚未启用端口1433上的TCP/IP侦听器。一个快速的“netstat-an”命令将告诉您它是否正在侦听。检查并注释您得到了什么???这是我在执行“netstat-an”时得到的结果:根据您的数字,端口号1433正在侦听。因此,这根本不是问题!谢谢你的帮助,我将访问dyndns.org。我正在寻找的端口似乎是基于我运行的netstat命令侦听的。我查阅了更多的文档,并进行了编辑,使您的密码/用户名理论看起来很有可能,但我今天成功地使用了此密码和用户名。密码中是否有特殊字符(特别是反斜杠)?尝试执行
    System.err.println(“passwd=“+password”)
    以确认该值。密码打印正确。它是一个没有特殊字符的数字和字母字符串。
    "jdbc:sqlserver://" + serverName + ";database=" + databaseName