This repository was archived by the owner on Sep 26, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
Example
Maarten Zuidhoorn edited this page Dec 24, 2016
·
1 revision
package me.mrten.example;
import me.mrten.mysqlapi.MySQL;
import me.mrten.mysqlapi.queries.Callback;
import me.mrten.mysqlapi.queries.CreateTableQuery;
import me.mrten.mysqlapi.queries.InsertQuery;
import me.mrten.mysqlapi.queries.Query;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;
import java.sql.SQLException;
public class ExamplePlugin extends JavaPlugin implements Listener {
private MySQL mysql;
@Override
public void onEnable() {
// Create a MySQL object and connect to the database
mysql = new MySQL();
mysql.connect(getConfig().getString("mysql.host"), getConfig().getString("mysql.port"), getConfig().getString("mysql.username"), getConfig().getString("mysql.password"), getConfig().getString("mysql.database"));
getServer().getPluginManager().registerEvents(this, this);
createTable();
}
@Override
public void onDisable() {
// Disconnect from the database when the plugin disables
mysql.disconnect();
}
private void createTable() {
// Create a new SQL query
String sql = new CreateTableQuery("players")
.ifNotExists()
.column("id", "INT(11) AUTO_INCREMENT")
.column("uuid", "VARCHAR(255) NOT NULL")
.column("username", "VARCHAR(255) NOT NULL")
.primaryKey("id")
.build();
Query query = new Query(mysql, sql);
// Execute it asynchronously
query.executeUpdateAsync();
}
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
String sql = new InsertQuery("players")
.value("uuid")
.value("username")
.build();
Query query = new Query(mysql, sql);
// Set the parameters of uuid and username
query.setParameter(1, player.getUniqueId().toString());
query.setParameter(2, player.getName());
// Execute the query asynchronously and provide a callback
query.executeUpdateAsync(new CreatePlayerCallback(player));
}
private class CreatePlayerCallback implements Callback<Integer, SQLException> {
private Player player;
public CreatePlayerCallback(Player player){
this.player = player;
}
public void call(Integer integer, SQLException e) {
if (e != null) {
e.printStackTrace();
} else {
// If there were no errors this will be shown once the query has completed
player.sendMessage("Your data has been inserted!");
}
}
}
}