[英]SQL Server jdbc connection
I am running this code snippet on localhost in windows authentication but getting following error but I have alreadily added sqljdbc4 jar in my class path and while running from eclipse also I have added jar in build path 我在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.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();
}
}
}
The Error: 错误:
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)
help me please. 请帮帮我。
This error does not say "authentication error", it says "connection error" due to a "connection refused". 此错误不会说“身份验证错误”,它会因“连接被拒绝”而显示“连接错误”。 This means you need to specify the correct port number.
这意味着您需要指定正确的端口号。 You'll need to review your SQL Server configuration and update your connection string.
您需要检查SQL Server配置并更新连接字符串。
according to MSDN docs , the connection string should look like this: 根据MSDN文档 ,连接字符串应如下所示:
jdbc:sqlserver://localhost:<insert_proper_port_here>\SQLEXPRESS;databasename=yatin
You are not supplying a username or password, which you might need to do once you get the port number figured out. 您没有提供用户名或密码,一旦您弄清楚了端口号,您可能需要这样做。 See the referenced documentation for further details.
有关详细信息,请参阅参考文档。
I think it is configuration issue. 我认为这是配置问题。
Go to Run -> SQL Server Configuration Manger
Expand -> SQL Server *version_no* Network Configuration
Then click on - "Protocol for SQLEXPRESS"
If you find TCP/IP
protocol with Disabled
status then you need to enable
it. 如果您发现
TCP/IP
协议Disabled
状态,则需要enable
它。
In addition, you will need to restart the service: Open cmd > type in Services, then scroll down to SQL Server(MSSQLServer), and restart the service 此外,您还需要重新启动服务:打开cmd>键入Services,然后向下滚动到SQL Server(MSSQLServer),然后重新启动服务
First of all whenever you are using SQL instance name in URL you have to specify //[serverName[\\\\instanceName][:portNumber]]databaseName
首先,无论何时在URL中使用SQL实例名称,都必须指定
//[serverName[\\\\instanceName][:portNumber]]databaseName
for Eg: jdbc:sqlserver://localhost\\\\SQLEXPRESS:1433;databasename=yatin
对于Eg:
jdbc:sqlserver://localhost\\\\SQLEXPRESS:1433;databasename=yatin
Once this is done next step:- 一旦完成下一步: -
Then Apply and ok 然后申请并确定
Now go to SQL server services section under SQL Server Configuration Manager in left pane. 现在转到左窗格中SQL Server Configuration Manager下的SQL Server服务部分。 click on it
点击它
Now rerun the code 现在重新运行代码
You forgot to mention instance name. 你忘了提到实例名称。 See Building the Connection URL explain how to use connection url in sqlserver
请参阅构建连接URL说明如何在sqlserver中使用连接URL
If you not mention the full servername then you get the error like 如果你没有提到完整的服务器名,那么你会得到错误
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.".
My Server name is V_UDAY\\FRAMEWORK,
I removed FRAMEWORK
instance in URL
(in Java code) and execute, then I got an error as below. 我的服务器名称是
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.".
Below Image shown you server name with slash
seperation 在图像下方显示了带有
slash
分隔的服务器名称
sqljdbc4 is required for executing below Java program. 执行以下Java程序需要sqljdbc4。 Download sqljdbc4 jar or from Microsoft JDBC Driver 4.0 for SQL Server .
下载sqljdbc4 jar或从Microsoft JDBC Driver 4.0 for SQL Server 。
Example for connect to sqlserver using Java. 使用Java连接到sqlserver的示例。 Here
JSF
is database name. 这里
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();
}
}
}
Note: Mention instance name FRAMEWORK
in connection url
if you have otherwise remove instance name. 注意:如果您已删除实例名称,请在连接
url
提及实例名称FRAMEWORK
。
According Microsoft Documentation 根据Microsoft文档
String url = "jdbc:sqlserver://localhost\SQLEXPRESS:[your_port_tcp];databasename=yatin";
https://msdn.microsoft.com/pt-br/library/ms378428(v=sql.110).aspx https://msdn.microsoft.com/pt-br/library/ms378428(v=sql.110).aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.