Java SQL Server jdbc连接
我正在windows身份验证中的localhost上运行此代码段 但是得到以下错误,但是我已经在我的类路径中添加了sqljdbc4 jar 在从eclipse运行时,我还在构建路径中添加了jarJava SQL Server jdbc连接,java,sql-server-2005,jdbc,Java,Sql Server 2005,Jdbc,我正在windows身份验证中的localhost上运行此代码段 但是得到以下错误,但是我已经在我的类路径中添加了sqljdbc4 jar 在从eclipse运行时,我还在构建路径中添加了jar import java.io.*; import java.sql.*; import java.util.GregorianCalendar; import java.util.Date; import java.text.DateFormat; import java.text.SimpleDate
import java.io.*;
import java.sql.*;
import java.util.GregorianCalendar;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
class Cms_truncate
{
public static void main(String[] args)
{
Calendar cal = new GregorianCalendar();
//String name="cmscim";
Connection conn = null;
String url = "jdbc:sqlserver://localhost\SQLEXPRESS;databasename=yatin";
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String userName = "";
String password = "";
Statement stmt;
try
{
Class.forName(driver);//.newInstance();
conn = DriverManager.getConnection(url,userName,password);
String query = "truncate table cim";
stmt = conn.createStatement();
int flag = stmt.executeUpdate(query);
System.out.println("flag = "+flag);
conn.close();
System.out.println("");
} catch (Exception e) {
e.printStackTrace();
}
}
}
错误:
com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host localhost, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)
at com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:241)
at com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2243)
at com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:491)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1309)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at Cms_truncate.main(Cms_truncate.java:28)
请帮帮我。此错误没有显示“身份验证错误”,而是显示“连接错误”,原因是“连接被拒绝”。这意味着您需要指定正确的端口号。您需要检查SQL Server配置并更新连接字符串
根据,连接字符串应如下所示:
jdbc:sqlserver://localhost:<insert_proper_port_here>\SQLEXPRESS;databasename=yatin
jdbc:sqlserver://localhost:\SQLEXPRESS;databasename=yatin
您没有提供用户名或密码,在计算出端口号后可能需要这样做。有关更多详细信息,请参阅参考文档。我认为这是配置问题
Go to Run -> SQL Server Configuration Manger
Expand -> SQL Server *version_no* Network Configuration
Then click on - "Protocol for SQLEXPRESS"
如果发现TCP/IP
协议的状态为Disabled
,则需要启用它
此外,您还需要重新启动服务:
打开cmd>键入服务,然后向下滚动到SQL Server(MSSQLServer),然后重新启动服务您忘记提及实例名称。请参见解释如何在sqlserver中使用连接url
如果没有提到完整的服务器名,则会出现如下错误
com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host localhost , port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".
我的服务器名是V_UDAY\FRAMEWORK,
我删除了URL
中的FRAMEWORK
实例(在Java代码中)并执行,然后我得到了如下错误
com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host V_UDAY, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)
at com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:241)
at com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2243)
at com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:491)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1309)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
at java.sql.DriverManager.getConnection(DriverManager.java:571)
at java.sql.DriverManager.getConnection(DriverManager.java:215)
at com.testsql.SqlServerDatabaseConnectionUsingJava.getLocalConnection(SqlServerDatabaseConnectionUsingJava.java:28)
at com.testsql.SqlServerDatabaseConnectionUsingJava.main(SqlServerDatabaseConnectionUsingJava.java:18)
Exception in getLocalConeection() The TCP/IP connection to the host V_UDAY, port 1433 has failed. Error: "Connection refused: connect. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".
下图显示了使用斜杠分隔的服务器名
sqljdbc4是执行以下Java程序所必需的。下载jar或从
使用Java连接到sqlserver的示例。这里JSF
是数据库名
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class SqlServerDatabaseConnectionUsingJava {
private static Connection connection = null;
//1.jdbc driver name
private static String SQL_JDBC_DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
// 2. Database URL, V_UDAY\FRAMEWORK is ServerName and JSF is DataBase name
private static String URL = "jdbc:sqlserver://V_UDAY;instanceName=FRAMEWORK;databaseName=JSF";
//3.Database credentials
private static String USERNAME = "udaykiran";//UserName
private static String PASSWORD = "Pa55word";//Password
public static void main(String[] args) {
getLocalConnection();
}
public static Connection getLocalConnection() {
try {
Class.forName(SQL_JDBC_DRIVER);// Register jdbc driver
System.out.println("****Connect to Database****");
//4. open a connection
connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
System.out.println("DataBase connect to: "+ connection.getMetaData().getDriverName());
System.out.println("URL: "+ connection.getMetaData().getURL());
setConnectionClose();
System.out.println("Database Connection Closed");
} catch (Exception e) {
e.printStackTrace();
System.err.println("Exception in getLocalConeection() "+e.getMessage());
}
return connection;
}
public static void setConnectionClose() throws SQLException {
if (connection != null) {
connection.close();
}
}
}
注意:在连接url
中提及实例名称FRAMEWORK
,如果您已经删除了实例名称。根据Microsoft文档
String url = "jdbc:sqlserver://localhost\SQLEXPRESS:[your_port_tcp];databasename=yatin";
首先,无论何时在URL中使用SQL实例名称,都必须指定
/[serverName[\\instanceName][:portNumber]]databaseName
例如:jdbc:sqlserver://localhost\\SQLEXPRESS:1433;databasename=yatin
完成此操作后,下一步:-
转到所有程序->搜索SQL Server配置管理器。打开它
在左窗格中展开SQL server网络配置
单击protocols作为实例名称在大多数情况下都是SQLEXPRESS的协议
点击TCP IP。TCP IP属性窗口将被打开
选择enabled属性并将所有属性侦听为“YES”
导航到IP地址选项卡,检查IP所有部分TC动态端口是否为1433,如果不是,则进行设置
然后申请并确认
现在转到左窗格中SQL server配置管理器下的SQL server服务部分。点击它
在大多数情况下,您将看到数据库引擎正在运行一个实例名为SQLEXPRESS的引擎,右键单击它并停止它,然后再次启动它
现在重新运行代码连接被拒绝:连接。验证连接属性。确保SQL Server实例正在主机上运行,并在端口接受TCP/IP连接。确保到端口的TCP连接未被防火墙阻止。-也就是说,检查实例是否在指定的端口上运行,是否正在接受连接请求,检查凭据是否正确!检查:别忘了检查防火墙!小修正。这里,您提到要更改“TCP动态端口”。但实际上,我们必须更改TCP端口,而不是TCP动态端口。快乐编码。