2016-07-27 3 views
-1

Когда я нажимаю кнопку, все записи в таблице отображаются в таблице. Я использовал одинаковые и равные операторы в своем sql-запросе, он работает во второй раз, когда все данные извлекаются в таблицу? Может кто-нибудь сказать мне, что не так в коде?Когда я нажимаю кнопку, все записи в таблице отображаются в таблице

try{ 
      String url="jdbc:sqlserver://localhost:1433;databaseName=gym2 "; 
       String username = "mali"; 
       String password = "12345"; 
       Connection con =DriverManager.getConnection(url,username,password); 
       Statement st = con.createStatement(); 
       ResultSet rs; 
       String empid =jLabel3.getText()+jTextField1.getText(); 
       String name = jTextField2.getText(); 
       // String d =jComboBox1.getSelectedItem().toString(); 
     String sql = "SELECT emp_id,firstname,designation,full_address,gender,land,monthly_sal FROM employee_reg where (emp_id = '"+empid+"' or firstname LIKE '"+name+"%')"; 


     rs= st.executeQuery(sql); 
     jTable1.setModel(DbUtils.resultSetToTableModel(rs)); 
      } 
      catch(Exception e){ 

      } 
     }     
+1

никогда не делайте что-либо подобное: 'catch (Exception e) { }'. По крайней мере, напечатайте stacktrace, и вы увидите, что происходит – Jens

+0

Подробнее о подготовленных заявлениях – Jens

+0

Ваш вопрос непонятен –

ответ

0

Я думаю, что «первый раз» и «второй раз» в оригинальный вопрос на самом деле означает «значение jTextField1 определенного» и «значение jTextField2 определено».

Сгенерированный SQL строка запроса с пустой jTextField2 (именем) приведет:

SELECT emp_id,firstname,designation,full_address,gender,land,monthly_sal 
FROM employee_reg where (emp_id = '...' or firstname LIKE '%'); 

firstname LIKE '%' будет соответствовать всем записям, в которых Firstname является не NULL и поскольку условия разделены OR условие emp_id = '...' будет иметь очень незначительное влияние ,

Чтобы действительно «использовать фильтры, когда присутствует» сценарий, который мы должны исключить условие, если соответствующее поле не является пустым:

String  url  = "jdbc:sqlserver://localhost:1433;databaseName=gym2 "; 
String  username = "mali"; 
String  password = "12345"; 
Connection con  = DriverManager.getConnection(url,username,password); 
Statement st  = con.createStatement(); 
ResultSet rs; 

// Prepare the whole emp_id condition string 
String  empidCond = " or emp_id = '" + jLabel3.getText()+jTextField1.getText() + "'"; 
// Clear it if jTextField1 is empty 
if(jTextField1.getText().isEmpty()) {empidCond = "";} 

// Prepare the whole firstname condition string 
String  nameCond = " or firstname LIKE '" + jTextField2.getText() + "%'"; 
// Clear it if jTextField2is empty 
if(jTextField2.getText().isEmpty()) {nameCond = "";} 
// String d   = jComboBox1.getSelectedItem().toString(); 

// Create SQL statement with one "stub" condition always false 
// to "chain" the other conditions to 
String sql = "SELECT emp_id,firstname,designation,full_address,gender,land,monthly_sal "+ 
      "FROM employee_reg "+ 
      "WHERE 1=2" + empidCond + nameCond; 

rs = st.executeQuery(sql); 
jTable1.setModel(DbUtils.resultSetToTableModel(rs)); 

Я должен отметить, что все дело только в образовательных целях и ни один из кода выше должны когда-либо использоваться в производстве.