2016-01-02 3 views
0

Я работаю с JDBC за последние 2 дня. Но до сих пор не удалось успешно связаться с базой данных. вот код для установления соединения с базой данных:Ошибка подключения Java JDBC: Ошибка связи связи

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 

public class DBConnector { 

Connection conn = null; 
public static String SERVER_NAME = "localhost"; 
public static String PORT_NUMBER = "3306"; 
public static String DATABASE_NAME = "TemporaryDatabase"; 
public String uri = "jdbc:mysql://" + SERVER_NAME + ":" + PORT_NUMBER + "/" + DATABASE_NAME; 

public String username = "root"; 
public String password = ""; 

public DBConnector() { 
} 

public boolean Connect() { 

    try { 

     if (init()) { 
      conn = DriverManager.getConnection(uri, username, password); 
      return true; 

     } else { 
      System.out.println("Can not load driver."); 
      return false; 
     } 
    } catch (SQLException se) { 
     se.printStackTrace(); 
     return false; 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return false; 
    } 

} 

public static boolean init() { 
    String driverName = "com.mysql.jdbc.Driver"; // for MySql 

    try { 
     Class.forName(driverName); 
     return true; 

    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
     return false; 
    } 

} 

}

А вот ошибки я получаю, когда я бегу этот кусок кода:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) 
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:981) 
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:339) 
    at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2253) 
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2286) 
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2085) 
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:795) 
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) 
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:400) 
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:327) 
    at java.sql.DriverManager.getConnection(DriverManager.java:571) 
    at java.sql.DriverManager.getConnection(DriverManager.java:215) 
    at DBConnector.Connect(DBConnector.java:24) 
    at WebCrawler.main(WebCrawler.java:37) 
Caused by: java.net.ConnectException: Connection refused: connect 
    at java.net.DualStackPlainSocketImpl.connect0(Native Method) 
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) 
    at java.net.Socket.connect(Socket.java:579) 
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:211) 
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:298) 
    ... 16 more 
CONNECTION: false 

Я используя MS SQL Server 2012. Может кто-нибудь, пожалуйста, сообщите мне, где я делаю это неправильно. Я предполагаю, что это с именем пользователя и паролем, но я тоже не знаю правильных. Я работаю с экземпляром SQL-сервера по умолчанию.

+2

Если вы используете ** Microsoft SQL Server **, то почему вы используете ** MySQL ** драйвер (и синтаксис URL)? –

ответ

0

Вы используете SQL Server, но ваш JDBC-url для MySQL. Правильная форма URL JDBC для SQL Server, как следующее:

jdbc:sqlserver://[serverName[\instanceName][:portNumber]][;property=value[;property=value]] 

Например:

jdbc:sqlserver://localhost:1433;databaseName=TemporaryDatabase 

Также вам следует использовать драйвер JDBC SQL сервера, а не в MySQL. Вы можете найти драйвер here и информацию о строках подключения SQL Server here.

+0

чем должен быть URL-адрес сервера SQL? –

+0

Я добавил uri для SQL-сервера как 'uri =" jdbc: sqlserver: // "+ SERVER_NAME +": "+ PORT_NUMBER +"/"+ DATABASE_NAME; ' . Теперь я получаю сообщение об ошибке, указав _Не подходящий драйвер для jdbc: sqlserver: // localhost: 3306/TemporaryDatabase_ –

+0

Также добавьте драйвер JDBC SQL Server в путь к классам вместо MySQL –

Смежные вопросы