i have following sql table "tax_info" 3 columns:
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
Post a Comment