如何使用Java连接到MySQL web服务器?
好的,这里有一点背景: 我目前正在尝试开发一个推荐应用程序。在我们的网站上有一个链接,用户可以将他们的朋友推荐到我们的游戏服务器(Minecraft)。它将把推荐人的信息输入数据库(托管在我的网站上),并向“朋友”发送链接。朋友点击链接并输入他们的信息(这些信息也存储在数据库中)。所有这些都非常有效!(耶!)现在来看Java插件 应该发生什么… 我有一个事件监听器,每当用户登录到游戏时,它就会启动。基本上,它会检查数据库中用户的信息,如果用户符合标准,那么它会奖励他们额外的推荐商品 我现在想做什么… 现在,我基本上只是想让它连接并显示行的id,以及插件启用时的ref_id(reference id)。但是,我得到了以下错误:如何使用Java连接到MySQL web服务器?,java,mysql,Java,Mysql,好的,这里有一点背景: 我目前正在尝试开发一个推荐应用程序。在我们的网站上有一个链接,用户可以将他们的朋友推荐到我们的游戏服务器(Minecraft)。它将把推荐人的信息输入数据库(托管在我的网站上),并向“朋友”发送链接。朋友点击链接并输入他们的信息(这些信息也存储在数据库中)。所有这些都非常有效!(耶!)现在来看Java插件 应该发生什么… 我有一个事件监听器,每当用户登录到游戏时,它就会启动。基本上,它会检查数据库中用户的信息,如果用户符合标准,那么它会奖励他们额外的推荐商品 我现在想做什
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.
因此,不用多说,这里是我的单一Java文档。当然,这不是我数据库的真实用户名和登录信息但我希望这里有人能告诉我怎么了,因为我现在太迷路了
package com.arithia.plugins;
import java.sql.*;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerLoginEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class ArithiaReferrals extends JavaPlugin implements Listener {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://66.147.244.122:3306/graphja6_referrals";
// Database credentials
static final String USER = "fake_username";
static final String PASS = "fake_password";
@Override
public void onEnable() {
Connection conn = null;
Statement stmt = null;
try {
// STEP 2: Register JDBC driver
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// STEP 3: Open a connection
getLogger().info("Connecting to database...");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
// STEP 4: Execute a query
getLogger().info("Creating statement...");
stmt = conn.createStatement();
String sql;
sql = "SELECT id, ref_id FROM referred_users";
ResultSet rs = stmt.executeQuery(sql);
// STEP 5: Extract data from result set
while(rs.next()) {
// Retrieve by column name
int id = rs.getInt("id");
int ref_id = rs.getInt("ref_id");
// Display values
getLogger().info("ID: " + id);
getLogger().info("Referral ID: " + ref_id);
}
// STEP 6: Clean-up environment
rs.close();
stmt.close();
conn.close();
}catch(SQLException se) {
// Handle errors for JDBC
se.printStackTrace();
}finally{
// finally block used to close resources
try{
if(stmt!=null)
stmt.close();
}catch(SQLException se2){
} // nothing we can do
try {
if(conn!=null)
conn.close();
}catch(SQLException se){
se.printStackTrace();
} // End Finally try
} // end try
getLogger().info("Goodbye!");
getLogger().info("The [Arithia Referrals] plugin was enabled!");
}
@Override
public void onDisable() {
getLogger().info("The [Arithia Referrals] plugin was disabled!");
}
@EventHandler
public void onPlayerLogin(PlayerLoginEvent e) {
// "Check database for player..."
}
}
其他信息…
数据库名称:graphja6\u参考
数据库表:引用的用户
注意:我不能完全确定DB_URL
是否正确66.147.244.122
是正确的IP,但我不能完全确定端口或其他任何内容,因此如果有人能够验证这一点,我将不胜感激
非常感谢你的帮助。好吧,我只是个白痴 对于任何其他出现此错误的用户,您需要将远程连接的IP列入白名单,才能使其正常工作。这是一个防火墙的东西,根据您的主机,cPanel中可能有一个“远程MySQL”选项。将IP添加到尝试访问数据库的远程客户端,以便将其列入白名单
感谢每一位试图帮助我们的人。请删除tagI试图编辑它,但它已不存在。我道歉。我正在使用PHP创建数据库等等,这就是我将其包括在内的原因。我想现在修好了。很抱歉。这是否可能是防火墙相关的问题(在客户端和/或服务器上)?你服务器上的端口打开了吗?你确定远程服务器允许远程连接吗?@RafaelOsipov,我不确定。如何检查服务器上的端口是否打开?这就是要求您提供的内容