Created
January 22, 2014 13:25
-
-
Save codebucketdev/8558660 to your computer and use it in GitHub Desktop.
Exampleclass for my MySQL System
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package de.codebucket.mysql; | |
import java.sql.SQLException; | |
import java.util.List; | |
import java.util.Random; | |
import de.codebucket.mysql.Operators.DataTypes; | |
public class SqlTest | |
{ | |
//Instanzen der Datenbank und der benötigten Tabelle, | |
//um darauf leicht zugreifen zu können | |
private static Database data; | |
private static Table table; | |
//Dies sollte man beim starten der Anwendung/des Plugins machen ;) | |
public static void main(String[] args) | |
{ | |
//Verbindungsdaten zur Datenbank | |
String hostn = "localhost"; | |
Integer port = 3306; | |
String dbase = "database"; | |
String usern = "root"; | |
String passw = ""; | |
//Holen einer neuen Datenbank-Instanz | |
Database db = new Database(hostn, port, dbase, usern, passw, true); | |
try | |
{ | |
//WICHTIG: Verbindung öffnen :) | |
db.openConnection(); | |
//Wenn Verbindung ohne Fehler geöffnet wurde, dann können wir die Instanz oben setzen. | |
data = db; | |
//Dies sind jetzt Teile von Tests, um zu gucken ob es geht :D | |
firstTest(); | |
} | |
catch (ClassNotFoundException | SQLException e) | |
{ | |
System.exit(0); | |
} | |
} | |
//Wir setzen die Spalten und die dazugehörigen Typen fest.. | |
private static String[] columns = { "username", "password", "level", "uuid", "online" }; | |
private static DataTypes[] types = { DataTypes.Text, DataTypes.Text, DataTypes.Int, DataTypes.Float, DataTypes.Boolean }; | |
//Dies ist nur für den Zufall benötigt ;) | |
private static Random r = new Random(); | |
public static void firstTest() | |
{ | |
//Wir holen uns unsere Testtabelle von der Datenbank... | |
table = data.getTable("test_userdata"); | |
//...und gucken ob sie überhaupt existiert :D | |
if(!table.exists()) | |
{ | |
//Falls nein, dann erstellen wir sie mit unseren oben festgelegten Daten :P | |
try | |
{ | |
table.create(columns, types); | |
} | |
catch (SQLException e) | |
{ | |
e.printStackTrace(); | |
} | |
} | |
//ansonsten leeren wir die Tabelle :) | |
else | |
{ | |
try | |
{ | |
table.clear(); | |
} | |
catch (SQLException e) | |
{ | |
e.printStackTrace(); | |
} | |
} | |
//JETZT füllen wir die (neue) Tabelle mit bestimmten Daten :D | |
Object[] values = { "Codebucket", "password_das_eh_die_nsa_kennt", 9000 /*OVER 9000 :D*/, 58968F, 0 }; | |
try | |
{ | |
table.insertEntry(columns, values); | |
} | |
catch (SQLException e) | |
{ | |
e.printStackTrace(); | |
} | |
for(int i = 0; i < 15; i++) | |
{ | |
//Jetzt fügen wir zufällige Daten ein :) | |
Object[] randomValues = { "user" + r.nextInt(1000), "pws" + r.nextInt(100000), r.nextInt(50), r.nextFloat(), r.nextInt(2) }; | |
try | |
{ | |
table.insertEntry(columns, randomValues); | |
} | |
catch (SQLException e) | |
{ | |
e.printStackTrace(); | |
} | |
} | |
//Zum Schluss lesen wir die Größe der Tabelle aus. | |
try | |
{ | |
System.out.println("["+table.getTablename()+"] Tablesize now: " + table.size()); | |
} | |
catch (SQLException e) | |
{ | |
e.printStackTrace(); | |
} | |
//Wir warten noch 3 Sekunden bis wir weiter gehen :) | |
try | |
{ | |
Thread.sleep(5*1000); | |
} | |
catch (InterruptedException e) {} | |
secondTest(); | |
} | |
public static void secondTest() | |
{ | |
//Soo nun wollen wir den User Codebucket auslesen und seine Daten verändern :D | |
String username = "Codebucket"; | |
String password = null; | |
int level = 0; | |
float uuid = 0; | |
boolean online = false; | |
try | |
{ | |
password = table.getString("password", "username", username); | |
//Was passiert nun hier? | |
//Also ich versuche aus der Spalte "password" das Password vom Benutzer (Spalte "username") Codebucket (Suche username) zu erhalten. | |
//Das machen wir jetzt mit dem rest auch :) | |
level = table.getInt("level", "username", username); | |
uuid = table.getFloat("uuid", "username", username); | |
online = table.getBoolean("online", "username", username); | |
} | |
catch (SQLException e) | |
{ | |
e.printStackTrace(); | |
} | |
System.out.println("Values of User Codebucket: "); | |
System.out.println("username: " + username + ", password: " + password + | |
", level: " + level + ", uuid: " + uuid + ", online: " + online); | |
//JETZT verändern wir die Daten >:D | |
password = "ach_ist_eh_jetzt_anders"; | |
level = level / 8 * 10 * 2 / 80; //Weiss nicht mal was rauskommen soll :D | |
uuid = uuid * 1.5F; | |
//..und updaten sie in der Tabelle :) | |
Object[] updateValues = { username, password, level, uuid, 1 }; | |
try | |
{ | |
table.updateEntry(columns, updateValues, "username", username); | |
//Was passiert da oben?? | |
//Ich suche nach der Zeile vom Benutzer Codebucket und ersetze die Daten in den Spalten ;) | |
} | |
catch (SQLException e) | |
{ | |
e.printStackTrace(); | |
} | |
//Wir warten noch 3 Sekunden bis wir weiter gehen :) | |
try | |
{ | |
Thread.sleep(5*1000); | |
} | |
catch (InterruptedException e) {} | |
lastTest(); | |
} | |
public static void lastTest() | |
{ | |
//So jetzt wollen wir die Top 10 aller Benutzer mit den höchsten Leveln erhalten | |
//Dazu holen wir uns eine sortierte Liste .. | |
List<Object> liste = null; | |
try | |
{ | |
liste = table.getSortedList("username", "level", 10); | |
} | |
catch (SQLException e) | |
{ | |
e.printStackTrace(); | |
} | |
if(liste != null) | |
{ | |
try | |
{ | |
//und geben sie auch mit den Werten aus :) | |
System.out.println("+++ TOP 10 USERS WITH MOST LEVELS +++"); | |
int getter = 0; | |
for(int i = 0; i < liste.size(); i++) | |
{ | |
getter++; | |
Object o = liste.get(i); | |
int level = table.getInt("level", "username", o); | |
System.out.println(getter + ". " + o + ": " + level); | |
} | |
System.out.println("+++ END OF THE LIST +++"); | |
} | |
catch (SQLException e) | |
{ | |
e.printStackTrace(); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment