gpt4 book ai didi

java - 如何使用 Java 连接到 MySQL Web 服务器?

转载 作者:行者123 更新时间:2023-11-30 00:05:41 25 4
gpt4 key购买 nike

好的,这是一些背景知识:

我目前正在尝试开发一个推荐应用程序。我们的网站上有一个链接,用户可以将他们的 friend 推荐到我们的游戏服务器(Minecraft)。它将把推荐人的信息输入数据库(托管在我的网站上)并向“ friend ”发送链接。 friend 单击链接并输入他们的信息(也存储在数据库中)。所有这一切都运转良好! (耶!)那么,现在是 Java 插件了!

应该发生什么......

我有一个事件监听器,每当用户登录游戏时就会触发该事件监听器。本质上,它会检查数据库中的用户信息,如果用户符合标准,它将奖励他们额外的推荐礼物。

我现在正在尝试做的事情...

现在,我本质上是想让它连接并显示行的 id,以及启用插件时的 ref_id(推荐 ID)。但是,我收到以下错误:

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_referrals

数据库表:refered_users

注意:我不完全确定 DB_URL 是否正确...66.147.244.122 是正确的 IP,但我'我不完全确定端口或其他任何东西,所以如果有人可以验证这是正确的,我将不胜感激。

非常感谢您的帮助。

最佳答案

好吧,所以我只是个白痴。

对于遇到此错误的其他人,您需要将远程连接的 IP 列入白名单才能正常工作。这是一个防火墙问题,并且根据您的托管对象,cPanel 中可能有一个“远程 MySQL”选项。将IP添加到尝试访问数据库的远程客户端,这样它将被列入白名单。

感谢所有试图提供帮助的人。 <3

关于java - 如何使用 Java 连接到 MySQL Web 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24576844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com