Java 如何生成JDBC数据库URL?
今天我已经研究了大约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-b9a81a371529Java 如何生成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
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