1. We are planning scheduled maintenance on this website on Friday 5 March (tomorrow) at 4:00 am UTC. It is estimated that this maintenance will last 15 minutes. You can view this time in your local timezone here. Thanks.
    Dismiss Notice

MySQL API 3.3

A simplified API that will help you work with your Minecraft related database.

  1. Vagdedes
    Tested Minecraft Versions:
    • 1.7
    • 1.8
    • 1.9
    • 1.10
    • 1.11
    • 1.12
    • 1.13
    • 1.14
    • 1.15
    • 1.16
    Contributors:
    Can be found in the Discord server (https://vagdedes.com/discord)
    Languages Supported:
    English
    MySQL API is a library-plugin that simplifies the process of running a database. SQL commands are replaced with methods that require a few arguments in order to execute a query.


    Permissions
    mysql.admin - Gives your permission to /mysql command.

    Commands

    /mysql reload/rl - Reloads the configuration.
    /mysql connect - Connects the plugin to the database.
    /mysql disconnect - Disconnects the plugin from the database.
    /mysql reconnect - Resets the plugin's connection to the database.

    Config API

    Class: me.vagdedes.basic.Config
    This class will control the plugin's configuration. It is recommended to reconnect the database after configuration changes.
    Code (Text):

    void create() // Creates the config or object if doesn't exist.
    void reload() // Reloads the plugin config.
    void clear() // Clears the mysql configuration file.

    String getHost() // Returns the host.
    String getUser() // Returns the user.
    String getPassword() // Returns the password.
    String getDatabase() // Returns the database.
    String getPort() // Returns the port.
    Boolean getSSL() // Returns "true" if SSL connection is enabled.

    void setHost(String s) // Changes the host.
    void setUser(String s) // Changes the user
    void setPassword(String s) // Changes the password.
    void setDatabase(String s) // Changes the database.
    void setPort(String s) // Changes the port.
    void setSSL(Boolean b) // Changes the SSL connection.
     
    Basic API

    Class: me.vagdedes.mysql.MySQL
    This class contains the base methods of the API. The update() and query() methods can be used to extend the API's capabilities.
    Code (Text):

    void connect() // Connects to the database.
    void disconnect() // Disconnects from the database.
    void reconnect() // Restarts the connection to the database.
    Boolean isConnected() // Checks if the connection exists.
    void update(String command) // Excecutes an update to the database.
    ResultSet query(String command) // Returns a query from the database.
    Connection getConnection() // Returns the mysql current connection.
     
    Advanced API

    Class: me.vagdedes.mysql.SQL
    If the advanced methods of the SQL class aren't enough for your systems, you can still make your own by using MySQL's class update() and query() methods.
    Code (Text):

    void deleteTable(String table) // Deletes a table from the database.
    void truncateTable(String table) // Clears a table in the database.
    Integer countRows(String table) // Coureturns retunrs the number of rows in a table.
    Boolean tableExists(String table) // Returns if a table exists in the database.

    void set(String selected, Object object, String column, String logic_gate, String data, String table) // Updates the data of a column with your inserted object.
    SQL.set("cooldown", 5, "name", "=", "Player", "basic_table"); // Example

    void set(String selected, Object object, String where_arguments, String table) // Updates the data of a column with your inserted object based on multiple arguments.
    SQL.set("cooldown", 5, new String[]{"name=Player", "cooldown=0"}, "basic_table"); // Example

    void deleteData(String column, String logic_gate, String data, String table) // Deletes data from a table.
    SQL.deleteData("nickname", "=", "George2009", "ranks"); // Example

    void insertData(String columns, String values, String table) // Inserts data into a table.
    SQL.insertData("name, kit, cooldown", " 'Sam', 'Fisherman', '29' ", "kitpvp"); // Example

    void upsert(String selected, Object object, String column, String logic_gate, String data, String table) // Updates the data of a column with your inserted object if it exists, or alternatively inserts a new row to the table.
    SQL.upsert("cooldown", 5, "name", "=", "Player", "basic_table"); // Example

    Boolean exists(String column, String data, String table) // Checks if a data exists in a certain column.
    Boolean b = SQL.exists("custom_nickname", "&1J&2o&3h&4n", "player_settings"); // Example

    void createTable(String table, String columns) // Creates a new table if it doesn't already exist.
    SQL.createTable("ranks", "rank INT (11), join_date TIMESTAMP"); // Example

    Object get(String selected, String column, String logic_gate, String data, String table) // Returns an object variable owned by the selected column.
    Object o = SQL.get("kills", "uuid", "!=", "deleted_player", "pvp_stats"); // Example

    Object get(String selected, String[] where_arguments, String table) // Returns an object variable owned by the selected columns.
    Object o = SQL.get("kills", new String[]{"uuid != deleted_player", "enabled = 1"}, "pvp_stats"); // Example

    ArrayList<Object> listGet(String selected, String column, String logic_gate, String data, String table) // Returns an object variable owned by the selected column.
    ArrayList<Object> arrayList = SQL.listGet("kills", "uuid", "!=", "deleted_player", "pvp_stats"); // Example

    for (Object individual : arrayList) {
        // Do Stuff
    }

    ArrayList<Object> listGet(String selected, String[] where_arguments, String table) // Returns an object variable owned by the selected columns.
    ArrayList<Object> arrayList = SQL.listGet("kills", new String[]{"uuid != deleted_player", "enabled = 1"}, "pvp_stats"); // Example

    for (Object individual : arrayList) {
        // Do Stuff
    }
     

    Asynchronous Processing
    To process tasks asynchronously, use the following method provided by the Bukkit library.
    Code (Text):

    Bukkit.getScheduler().runTaskAsynchronously(pluginObject, () -> {
        // implement code here
    });
     
    Zach_FR, Kagrurnaax, Lazo and 4 others like this.

Recent Updates

  1. Version 3.3
  2. Version 3.2
  3. Version 3.1

Recent Reviews

  1. mathiaseklund
    mathiaseklund
    5/5,
    Version: 3.3
    I like this resource very much as I am often too lazy to make my own SQL Handler when making private projects.

    Would be awesome if you could add a custom event that's fired when the SQL connection is established. :)
  2. minping
    minping
    5/5,
    Version: 3.3
    Works like magic! I love this API, but why is it prints "SQL connected" every query?
  3. hanktnt
    hanktnt
    5/5,
    Version: 3.3
    great api but can you add an example XD
    im a beginner
    thx dude
    love this api.
    1. Vagdedes
      Author's Response
      Thanks for the review. The resource's overview page is full of examples of how you can and should use this plugin.
  4. minez
    minez
    5/5,
    Version: 3.2
    Great plugin. I would like to add a full asynchronous, but this is only at the request of the author. Thanks!
    1. Vagdedes
      Author's Response
      Thanks for the review. Near the bottom of the overview page, it's explained how to execute a method asynchronously.
  5. Jochyoua
    Jochyoua
    5/5,
    Version: 3.2
    Using this with my plugin, not really used to MySQL but this API helps me a lot, really nice author and great API :)
  6. Bruce0203
    Bruce0203
    5/5,
    Version: 3.2
    This API is my first Using API.
    Really helpful nice plugin.
    Thank you for made this.
  7. Scofield__
    Scofield__
    5/5,
    Version: 3.1
    Love this API. And really helpful support. fixed an issue in 10 minutes, Keep it up 5*
  8. DoggyPlayss
    DoggyPlayss
    5/5,
    Version: 3.0
    Cool API, makes it much easier to work with MySQL. Its really good for new developers as its really easy to understand! Thanks for making it you rock!
  9. KR_GAMING2005
    KR_GAMING2005
    5/5,
    Version: 3.0
    Thanks so mutch I have tried working with MySQL Databases before and i just coudent understand it (Sorry for bad English Im Swedish)
  10. NixiCZ
    NixiCZ
    4/5,
    Version: 2.9
    Hello there,
    your plugin is very useful and creative. But i have one problem.
    I'm using your plugin at server 1.12.2 version and that works. But when I use my own plugin with your API plugin on 1.8.8 version server it don't want to connect to the same database.. It wrote me: Unknown initial character set index '255' received from server. Can you help me?
    All console output: https://pastebin.com/2Bx3SXBd
    1. Vagdedes
      Author's Response
      Reviews should represent your opinion, so please delete it and provide me a paste of your configuration via a conversation or the resource's thread.