I have some test JavaFX app and the code has a lot of similar parts regard of database. Just for example:
Class.forName("com.mysql.jdbc.Driver");
try (Connection connection = DriverManager.getConnection(Person.getURL(), Person.getDBUSERNAME(), Person.getDBPASSWORD())) {
String sqlQuery = "INSERT INTO users (users.user_name," +
"users.current_balance) VALUES (?, ?)";
PreparedStatement preparedStatement = connection.prepareStatement(sqlQuery);
preparedStatement.setString(1, newUserName);
preparedStatement.setBigDecimal(2, new BigDecimal(newBalance));
preparedStatement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
So I want to make an abstract class SqlWorkClass with an abstract method updateDatabaseInfo.
public abstract class SqlWorkClass {
public abstract void updateDatabaseInfo() throws ClassNotFoundException;
And 3 classes inherited of SqlWorkClass – DatabaseInsertClass, DatabaseUpdateClass and DatabaseSelectClass. But the problem is I have to use different parameters for method updateDatabaseInfo for each class.
public class DatabaseInsertClass extends SqlWorkClass {
@Override
public void updateDatabaseInfo(String newUserName, String newBalance) throws ClassNotFoundException{
//some actions with code above
}
public class DatabaseUpdateClass extends SqlWorkClass {
@Override
public void updateDatabaseInfo(String param1, String param2, String param3) throws ClassNotFoundException{
//some actions with code above
}
public class DatabaseSelectClass extends SqlWorkClass {
@Override
public void updateDatabaseInfo(String param1) throws ClassNotFoundException{
//some actions with code above
}
Obviously I can't do this. So how can I solve this problem? Maybe I should use interface or something else instead of abstract class? Hope for your advice guys! p.s. I use Java 7.