Mysql JDBC - 没有输入ResultSet +错误的没有。的行

时间:2015-07-11 16:10:28

标签: java mysql netbeans jdbc

我遇到了一个问题,我正在通过我的MySQL数据库生成一个ResultSet。我的查询应该每个表最多返回一行(我循环遍历几个表,按员工编号搜索)。我在一些表中输入了数据;但我的测试o / p表示结果集包含0行,并且根本不会通过ResultSet。它应该打印的o / p线永远不会出现。在我意识到它最多只返回一行之前,它处于一个while循环中,此时我只是将while(rs.next())替换为if(rs.first())。仍然没有运气。有什么建议? 我的代码如下所示:

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

不在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”是我从用户处获取的内容。 问题是我已经在前两个表中输入了数据,crm和dgr。命令行界面中的相同查询有效;今天早上,我尝试了程序,它返回了一个包含数据的表(crm)的数据。下一次,没什么。

背景:我正在开展一个学校项目,为我父亲的办公室创建一些软件,它将帮助他们为员工组织培训等计划。 (有点像谷歌日历我猜。)我在Linux Mint上使用Netbeans和Mysql。数据库中大约有17个表。用户选择员工姓名,程序搜索数据库中与“事件”(我的测试/培训/其他必需事件的通用名称)对应的所有条目,并将它们放入JTable中。

1 个答案:

答案 0 :(得分:0)

在创建查询时,列名和表名周围的单引号似乎导致了问题。在将它们更改为反引号时,检索工作正常,数据按预期进入。

谢谢@juergend(特别是对于很好的解释)和@nailgun!