2015-07-11 30 views
1

我遇到了一個問題,通過我從我的MySQL數據庫生成的ResultSet。我的查詢應該每個表最多返回一行(我正在循環搜索員工編號的幾個表)。我在一些表中輸入了數據;但是我的測試o/p說結果集包含0行,並且根本不通過結果集。它應該打印的o/p行永遠不會出現。在一個while循環中,我意識到它最多隻會返回一行,在這一點上,我只是將while(rs.next())換成了if(rs.first())。仍然沒有運氣。有什麼建議麼? 我的代碼如下所示:Mysql JDBC - 未輸入ResultSet +不正確的號碼。行

try 
{ 
    rsTablesList = stmt.executeQuery("show tables;"); 

    while(rsTablesList.next()) 
    { 
     String tableName = rsTablesList.getString(1); 

     //checking if that table is a non-event table; loop is skipped in such a case 
     if(tableName.equalsIgnoreCase("emp")) 
     { 
      System.out.println("NOT IN EMP"); 
      continue; 
     } 

     System.out.println("i'm in " + tableName); //tells us which table we're in 

     int checkEmpno = Integer.parseInt(empNoLbl.getText()); //search key 


     Statement s = con.createStatement(); 
     query = "select 'eventname','lastrenewaldate', 'expdate' from " + tableName + " where 'empno'=" + checkEmpno + ";"; // eventname, 
     System.out.println("query is \n\t" + query + ""); 
     rsEventDetails = s.executeQuery(query) ; 

     System.out.println("query executed\n"); 

     //next two lines for the number of rows 
     rsEventDetails.last(); 
     System.out.println("no. of rows is " + rsEventDetails.getRow()+ "\n\n"); 

      if(rsEventDetails.first()) 
      { 

       System.out.println("inside the if"); 

       // i will add the row now 
       System.out.println("i will add the row now"); 
       // cdTableModel.addRow(new Object[] {evtname,lastRenewalDate,expiryDate}); 
      } 



    } 

} 

我的輸出是這樣的:

我在CRM

查詢

select 'eventname','lastrenewaldate', 'expdate' from crm where 'empno'=17; 

查詢執行

沒有。行的是0

我DGR

查詢我是

select 'eventname','lastrenewaldate', 'expdate' from dgr where 'empno'=17; 

查詢執行

沒有。行的是0

NOT IN EMP

我在eng_prof的

查詢

select 'eventname','lastrenewaldate', 'expdate' from eng_prof where 'empno'=17; 

查詢執行

沒有。行的是0

我在frtol

查詢

select 'eventname','lastrenewaldate', 'expdate' from frtol where 'empno'=17; 

查詢執行

沒有。行的是0

(等,高達17頁的表。)

查詢中的「17」是,我已經從用戶拉EMPNO。 問題是我已經在前兩個表格crm和dgr中輸入了數據。命令行界面中的相同查詢起作用;今天早上,我試了一下程序,它返回了一個有數據的表(crm)的數據。下一次,什麼都沒有。

背景:我正在開展一個學校項目,爲我父親的辦公室創建一些軟件,它將幫助他們爲員工組織培訓等。 (有點像谷歌日曆,我猜)。我在Linux Mint上使用Netbeans和Mysql。數據庫中有大約17個表格。用戶選擇員工姓名,程序將搜索數據庫中與「事件」(測試/培訓/其他必需事件的通用名稱)對應的所有條目,並將其放入JTable中。

+1

不要在列或表名周圍使用引號。如果你需要逃避其中一些使用反引號。因此,使用'where'empno'= 17'可以轉化爲:讓我把所有記錄的字符串'empno'等於數字'17',顯然總是'false'。 –

+0

@juergend事實上,我之前遇到了一個問題,那時我創建的查詢沒有單引號。它會返回一個錯誤,說沒有找到這樣的列。在這裏的幾個帖子與相同的問題得出結論,這是使其工作的方式。我的錯誤消失了,所以我認爲它解決了這個問題。這是像你說的那樣逃脫他們嗎?在這種情況下,我將改爲反引號。 –

+0

\ columnName \'而不是'columnName'是要走的路 – Nailgun

回答

0

創建查詢時圍繞列名和表名的單引號似乎導致了問題。將它們改爲反引號時,檢索工作正常,數據按預期進行。

謝謝你,@juergend(特別是對於很好的解釋)和@nailgun!