Sto cercando di realizzare un metodo che scriva su un database i valori di una matrice di oggetti mat[][] (String, Double, Date, ecc...). Ho pensato ad un costrutto come questo:
for (i = 0; i < camp; i++) {
if (mat[0][i] instanceof Double) {
tab = tab + ", '" + i + "' REAL";
}
else if (mat[0][i] instanceof Float) {
tab = tab + ", '" + i + "' REAL";
}
else if (mat[0][i] instanceof Boolean) {
tab = tab + ", '" + i + "' TEXT";
}
else if (mat[0][i] instanceof String) {
tab = tab + ", '" + i + "' TEXT";
}
else if (mat[0][i] instanceof Long) {
tab = tab + ", '" + i + "' INTEGER";
}
else if (mat[0][i] instanceof Integer) {
tab = tab + ", '" + i + "' INTEGER";
}
else if (mat[0][i] instanceof Short) {
tab = tab + ", '" + i + "' INTEGER";
}
else if (mat[0][i] instanceof Byte) {
tab = tab + ", '" + i + "' INTEGER";
}
else if (mat[0][i] instanceof Date) {
tab = tab + ", '" + i + "' BLOB";
}
else {
tab = tab + ", '" + i + "' NULL";
}
}
Dove il tipo di campo è scelto in modo automatico in funzione del tipo di oggetto. Se in una colonna si sono Double il campo corrispondente è REAL, ecc...
Però mi sono arenato quando ho dovuto fare il discorso opposto: "Se un campo è REAL usa getDouble(), se è TEST getString(), ecc..."
Come faccio a capire il metodo di lettura da database che devo usare, ovvero come faccio a capire come è stato settato in principio un determinato campo prima di leggerlo (vedi sotto)?
m[j][k - 1] = rs.getDouble(k); or m[j][k - 1] = rs.getString(k); ???