我正在尝试将Java应用程序连接到在本地计算机上设置的SQL数据库。没有服务器,因此在尝试研究服务器时无法找到所有答案或无法使用它们。运行此命令时出现的错误是:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败
由以下原因引起:java.net.ConnectException:连接被拒绝:connect
我已经验证了SQL的用户名和密码,并验证了该帐户具有完整的管理员权限。有任何想法吗?我不知所措...
package database_console;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConnect {
public static void main(String[] args) {
try{
String host= "jdbc:mysql://[myIPaddress]/MTGDatabase";
String uName = "Java";
String uPass = "pass";
Connection con = DriverManager.getConnection(host , uName, uPass );
}
catch(Exception e){
e.printStackTrace();
}
}
}
答案 0 :(得分:1)
用[127.0.0.1:3306“或” localhost:3306“替换[myIPaddress]。 '127.0.0.1'和'localhost'是指您自己的本地计算机的同一件事。 3306是MqSQL正在侦听新连接的端口。
String host = "jdbc:mysql://localhost:3306/MTGDatabase";
or
String host = "jdbc:mysql://127.0.0.1:3306/MTGDatabase";
这应该可以解决您当前的问题:)
但是在另一个节点上:
通过DriverManager获取数据库连接是一项相当古老的技术。一种更好的方法是使用DataSource,方法是查找已经为您配置的服务器容器:
Context context = new InitialContext();
DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc/MTGDatabase");
或直接从数据库驱动程序实例化和配置一个:
MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setUser("Java");
dataSource.setPassword("pass");
dataSource.setServerName("localhost");
,然后从中获取连接,如上:
Connection conn = dataSource.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM MYTABLE");
...
rs.close();
stmt.close();
conn.close();
答案 1 :(得分:-1)
您需要放置端口String host= "jdbc:mysql://[myIPaddress]:[port]/MTGDatabase";
并创建一个Statement以执行查询Statement stmt=con.createStatement();