我遇到了一個問題,通過我從我的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中。
不要在列或表名周圍使用引號。如果你需要逃避其中一些使用反引號。因此,使用'where'empno'= 17'可以轉化爲:讓我把所有記錄的字符串'empno'等於數字'17',顯然總是'false'。 –
@juergend事實上,我之前遇到了一個問題,那時我創建的查詢沒有單引號。它會返回一個錯誤,說沒有找到這樣的列。在這裏的幾個帖子與相同的問題得出結論,這是使其工作的方式。我的錯誤消失了,所以我認爲它解決了這個問題。這是像你說的那樣逃脫他們嗎?在這種情況下,我將改爲反引號。 –
\ columnName \'而不是'columnName'是要走的路 – Nailgun