Hallo zusammen.
Was ich hier versuche ist ein Validator für gewisse(!) SQL-Befehle. Am Ende soll der Validator einen Befehl wie "SELECT spalte FROM tabelle WHERE spalte = wert;" validieren können. Leider stehe ich gerade ein wenig auf dem Schlauch und komme nicht weiter.
Ich hoffe jemand kann mich wieder in die Spur bringen.
Vielen Dank schonmal im Voraus!
Was ich hier versuche ist ein Validator für gewisse(!) SQL-Befehle. Am Ende soll der Validator einen Befehl wie "SELECT spalte FROM tabelle WHERE spalte = wert;" validieren können. Leider stehe ich gerade ein wenig auf dem Schlauch und komme nicht weiter.
Ich hoffe jemand kann mich wieder in die Spur bringen.
Vielen Dank schonmal im Voraus!
Java:
public class SQLValidator {
public static final char[] ALLOWED_CHARACTERS = {'1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', ' ', ',', '*', ';'};
public static final String[] ALLOWED_CHARACTERS_FOR_WHERE = {"<", ">", "=", "LIKE"};
public boolean isValidSQL(String sql) {
String[] sqlInParts = sql.split("\\s");
for (String a:sqlInParts)
System.out.println(a);
if(sqlInParts[0] != "SELECT"){
return false;
}
if(sqlInParts[1] != ALLOWED_CHARACTERS.toString()){
return false;
}
if(sqlInParts[2] != "FROM"){
return false;
}
if(sqlInParts[3] != ALLOWED_CHARACTERS.toString()){
return false;
}
if(!sql.endsWith(";")){
return false;
}
return true;
}
}