package me.km.databank;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import me.km.api.Module;
import me.km.snuviscript.ScriptUtils;
import me.km.table.Table;
public abstract class SimpleDataBank
{
private final Connection c;
private final Module m;
public SimpleDataBank(Module m, Connection c)
{
this.c = c;
this.m = m;
init();
}
public Module getModule()
{
return m;
}
protected abstract void init();
/** Führt den gegebenen Query aus und gibt den Erfolg zurück.
*
* @param query ein Query, irgendetwas mit "INSERT, UPDATE, ..."
* @param ignore gibt keine Fehlermeldung aus, falls auf true
* @return true falls kein Error auftrat, sonst false
*/
public boolean update(String query, boolean ignore)
{
try(Statement stmt = c.createStatement())
{
stmt.executeUpdate(query);
return true;
}
catch(SQLException ex)
{
if(!ignore)
{
m.sendWarningToConsole("Der folgende Query hat einen Error ausgelöst:");
m.sendWarningToConsole(query);
m.sendWarningToConsole(ex.toString());
}
return false;
}
}
/** Führt den gegebenen Query aus und gibt die erste Spalte der ersten Reihe zurück.
*
* @param die Klasse der Rückgabe
* @param query ein Query, irgendetwas mit "SELECT"
* @param r die Klasse der Rückgabe
* @return das gewünschte Objekt, null falls ein Fehler auftrat oder der ResultSet leer ist
*/
@SuppressWarnings("unchecked")
public T getFirst(String query, Class r)
{
//System.out.println(query);
try(Statement stmt = c.createStatement();)
{
ResultSet rs = stmt.executeQuery(query);
if(rs.next())
{
return (T) rs.getObject(1);
}
return null;
}
catch(SQLException ex)
{
m.sendWarningToConsole("Der folgende Query hat einen Error ausgelöst:");
m.sendWarningToConsole(query);
m.sendWarningToConsole(ex.toString());
return null;
}
}
/** Führt den gegebenen Query aus und gibt die erste Spalte der ersten Reihe zurück.
*
* @param query ein Query, irgendetwas mit "SELECT"
* @return der gewünschte Byte, null falls ein Fehler auftrat oder der ResultSet leer ist
*/
public Byte getFirstByte(String query)
{
//System.out.println(query);
try(Statement stmt = c.createStatement();)
{
ResultSet rs = stmt.executeQuery(query);
if(rs.next())
{
return rs.getByte(1);
}
return null;
}
catch(SQLException ex)
{
m.sendWarningToConsole("Der folgende Query hat einen Error ausgelöst:");
m.sendWarningToConsole(query);
m.sendWarningToConsole(ex.toString());
return null;
}
}
/** Führt den gegebenen Query aus und gibt alle Spalten der ersten Reihe zurück.
*
* @param query ein Query, irgendetwas mit "SELECT"
* @return alle Spalten als Liste, bei einem Error kann sie null sein
*/
@SuppressWarnings("unchecked")
public ArrayList