简体   繁体   English

SQL Server jdbc连接

[英]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:- 一旦完成下一步: -

  1. Go to all Program- > search for SQL Server Configuration Manager.Open it 转到所有程序 - >搜索SQL Server配置管理器。打开它
  2. Expand SQL server network configuration in left pane 在左窗格中展开SQL Server网络配置
  3. Click on protocols for instance name in most cases it would be protocols for SQLEXPRESS 在大多数情况下,单击协议实例名称它将是SQLEXPRESS的协议
  4. Click on TCP IP. 单击TCP IP。 TCP IP properties window will get opened TCP IP属性窗口将打开
  5. Select enabled property and listen all property as "YES" 选择启用的属性并将所有属性视为“是”
  6. Navigate to IP address tab and check if ip all section TC Dynamic port is 1433 if not then set it 导航到IP地址选项卡,检查是否所有部分TC动态端口都是1433(如果没有),然后进行设置
  7. Then Apply and ok 然后申请并确定

  8. Now go to SQL server services section under SQL Server Configuration Manager in left pane. 现在转到左窗格中SQL Server Configuration Manager下的SQL Server服务部分。 click on it 点击它

  9. You will see database engine is running one with instance name in most of the case SQLEXPRESS,right click on it and stop it and then start it again. 在SQLEXPRESS的大多数情况下,您将看到数据库引擎正在运行具有实例名称的数据库引擎,右键单击它并停止它然后再次启动它。

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分隔的服务器名称

SQLSERVER_LoginPage

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM