无法建立在Eclipse IDE中使用Java数据库连接到SQL Server 2008(Unabl

2019-09-22 03:38发布

我试图连接到使用Java代码在Eclipse IDE的HP Operations Manager数据库。 我能够成功地通过Microsoft SQL Server Management Studio中2008连接,但它无法通过代码。 我已经安装了“用于SQL Server的Microsoft JDBC驱动程序4.0”

码:

import java.sql.*;

public class ConnectDatabase {

    Connection dbConnection = null;

    String dbName = "openview";
    String serverip="10.105.219.102";
    String serverport="1433";
    String url = "jdbc:sqlserver://"+serverip+"\\OVOPS;databaseName="+dbName+"";
    String userName = "HPOM-QA-WIN\\Administrator"; 
    String password = "Nbv12345";
    final String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
    Statement statement = null;
    ResultSet rs = null;
    int updateQuery = 0;

    public Connection getConnection() {

        System.out.println(url);
        try{
             Class.forName(driverName).newInstance();

             dbConnection = DriverManager.getConnection(url,userName,password);
             System.out.println(DriverManager.getDrivers());

             statement = dbConnection.createStatement();

             String QueryString = "select Id from openview.dbo.OV_MS_Message where OriginalServiceId like '{FaultDn[1]}'";

             updateQuery = statement.executeUpdate(QueryString);

             if(updateQuery!=0){
                System.out.println("success" + updateQuery);
             }
             statement.close();
             dbConnection.close();
          }catch (Exception e){
              e.printStackTrace();
         }
         return dbConnection;

     }

     public static void main(String[] args) {

        ConnectDatabase cDB = new  ConnectDatabase();
        cDB.getConnection();

    }

 }

我收到以下错误,当我执行此代码:

jdbc:sqlserver://10.105.219.102\OVOPS;databaseName=openview com.microsoft.sqlserver.jdbc.SQLServerException: The connection to the host 10.105.219.102, named instance ovops failed. Error: "java.net.SocketTimeoutException: Receive timed out". Verify the server and instance names and check that no firewall is blocking UDP traffic to port 1434.  For SQL Server 2005 or later, verify that the SQL Server Browser Service is running on the host.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.getInstancePort(SQLServerConnection.java:3589)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.primaryPermissionCheck(SQLServerConnection.java:1225)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:972)
    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 com.ucs.test.ConnectDatabase.getConnection(ConnectDatabase.java:27)
    at com.ucs.test.ConnectDatabase.main(ConnectDatabase.java:51)

当我改变的URL

String url = "jdbc:sqlserver://"+serverip+"\\OVOPS:"+serverport+";databaseName="+dbName+"";

我得到下面的错误:

jdbc:sqlserver://10.105.219.102\OVOPS:1433;databaseName=openview com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user 'HPOM-QA-WIN\Administrator'. ClientConnectionId:f1d323b7-9998-418c-b2a2-f2a7bd7b9b04
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
    at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:254)
    at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:84)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2908)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2234)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:2220)
    at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1326)
    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 com.ucs.test.ConnectDatabase.getConnection(ConnectDatabase.java:27)
    at com.ucs.test.ConnectDatabase.main(ConnectDatabase.java:51)

我已经明确地在Windows防火墙添加入站规则,允许在1434 UPD端口的流量,然后禁用防火墙。 但我仍然得到这个错误。 这里提供的凭据使用Microsoft SQL Server Management Studio中用于连接和它完美的罚款。 但它无法通过代码。

我不知道我要去的地方错了。 我无法建立通过代码连接成功。 请帮我。

Answer 1:

嘿感谢所有您的答复。 最后我能解决这个问题。 问题是URL和身份验证DLL。 变更网址

"jdbc:sqlserver://10.105.219.102:1433;instance=OVOPS;DatabaseName=openview;integratedSecurity=true" 

在加入的java.library.path“sqljdbc_auth.dll”的位置。 有效!

再次感谢您的努力帮助我:)



Answer 2:

我花了一段时间解决这个问题,但是你必须前往到SQL Server配置管理器应用程序。 当这样加载,并展开[SQL本机客户端11.0配置]>客户端协议。

启用所有三个(共享内存,TCP / IP和命名管道),如果他们不已经。 然后点击TCP / IP,并确保默认端口为1433。

如果您安装了SQL Server的32位系统或版本,这样做将SQL Native Client 11.0配置(32it)菜单中,实现共享内存,TCP / IP和命名管道,默认端口设置为1433。

依次打开[SQL Server网络配置]或(32位如适用),然后选择[协议“YOURSERVERNAME”。 再次确保共享内存,都启用TCP / IP和命名管道。

然后点击[TCP / IP]协议名称,然后在新弹出窗口的顶部选择[IP地址]选项卡。 对于IP1确保Active是YES; 启用是肯定(这是默认情况下没有,哪怕是主动); 并设置TCP端口1433(TBH我不知道你有没有做到这一步,但我没有和它的工作!); 我的TCP动态端口被设置为0,我没有改变任何IP地址;

我做了IP10同样的事情,它有IP:127.0.0.1,这是本地机器。 我也向下滚动到页面的底部,并设置IPAll TCP端口1433,(动态端口是49163)。 然后,你需要应用的所有更改,关闭属性窗口,然后单击上的SQL Server服务在SQL Server配置管理器,然后重新启动所有正在运行的服务器。 这应做到:d



Answer 3:

抓住例子:

    String url = "jdbc:sqlserver://localhost:1433/databaseName";
    String username = "user";
    String password = "pass";

Connection connection = DriverManager.getConnection(url, username, password);

1433是默认端口。 在不使用URL“\”。



Answer 4:

这可能不是一个回答你的问题,但我希望这会帮助你。 下面是如何正确地返回连接(MySQL的)方式:

import java.sql.*;

public class ConnectToDatabase{


    public Connection getConn(){

        final String DBPATH="jdbc:mysql://localhost:3306/mydb";
        final String DBUSER="root";
        final  String DBPASS="";
        Connection conn=null;
        try {
             conn = DriverManager.getConnection(DBPATH,DBUSER,DBPASS);

        } catch (SQLException e) {

            e.printStackTrace();
        }
    return conn;
    }

}


Answer 5:

试着改变你的数据库的用户密码。 确保新密码不包含特殊字符。 我面临着同样的问题,它得到了改变分贝密码后解决。 我的解决方法的步骤:

我正在sqlserverexception.java 190错误提示无法连接到主机端口:4500这是我的本地主机端口。 打开SQL Server配置管理器 - > SQL Server网络配置 - > MSSQLSERVER的协议 - >已启用TCP / IP。 经过TCP端口号。 这是1433所以我在注册表文件改为4500年到1433年。

以下上面的步骤后,我得到了一个不同的错误我的数据库用户(SQL测试)这个时候startingpassword不正确。 我改sqltest123密码和它的工作。



文章来源: Unable to establish database connection to SQL Server 2008 using java in Eclipse IDE