java - How to check which range a float variable is within, from database values -


i have following sql table "tax_info" 3 columns:

enter image description here

i have variable called "salary" floating point. how can check tax bracket salary lies within? please note there many tax brackets necessary, there 3. far i've started off following, unsure how query.

  preparedstatement ps4 = con.preparestatement("select fromsalary, tosalary  payroll_system.tax_info");                resultset rt = ps4.executequery(); 

java naming convention variables start lowercase letter, variable should named salary, not salary.

float values have 7 digits of precision (6 9), bad datatype use salary. since tax brackets defined 0-6000, 6001-20000, ..., salary of 6000.42 fall between brackets. means salary value integer value, should use int, not float store value.

when using jdbc, must remember close statements , result sets, otherwise have resource leak. best way using try-with-resources.

here code find tax bracket given salary value.

// input: con, salary int taxbracket = 0, fromsalary = 0, tosalary = 0; string sql = "select taxbracket, fromsalary, tosalary" +               " payroll_system.tax_info" +              " ? between fromsalary , tosalary"; try (preparedstatement stmt = con.preparestatement(sql)) {     stmt.setint(1, salary);     try (resultset rs = stmt.executequery()) {         if (rs.next()) {             taxbracket = rs.getint("taxbracket");             fromsalary = rs.getint("fromsalary");             tosalary   = rs.getint("tosalary");         }     } } 

update

to allow last tax bracket open-ended, change tosalary value null.

taxbracket fromsalary tosalary ========== ========== ======== 1          0          6000 2          6001       20000 3          20001      null 

you modify code follows:

string sql = "select taxbracket, fromsalary, tosalary" +               " payroll_system.tax_info" +              " fromsalary <= ?" +                " , (tosalary >= ? or tosalary null)"; try (preparedstatement stmt = con.preparestatement(sql)) {     stmt.setint(1, salary);     stmt.setint(2, salary);     try (resultset rs = stmt.executequery()) {         if (rs.next()) {             taxbracket = rs.getint("taxbracket");             fromsalary = rs.getint("fromsalary");             tosalary   = rs.getint("tosalary");             if (rs.wasnull())                 tosalary = integer.max_value;         }     } } 

note getint() returns 0 when value null, why have check null.


Comments