Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Mysql JDBC-不输入结果集+;行数不正确_Java_Mysql_Netbeans_Jdbc - Fatal编程技术网

Java Mysql JDBC-不输入结果集+;行数不正确

Java Mysql JDBC-不输入结果集+;行数不正确,java,mysql,netbeans,jdbc,Java,Mysql,Netbeans,Jdbc,我在使用MySQL数据库生成的结果集时遇到了一个问题。我的查询应该在每个表中最多返回一行(我正在按员工编号搜索多个表)。我在一些表格中输入了数据;但是我的测试o/p说resultset包含0行,根本不经过resultset。应该打印的o/p行从未出现。在我意识到它最多只能返回一行之前,它是在一个while循环中,此时我将while(rs.next())替换为if(rs.first())。还是不走运。有什么建议吗? 我的代码如下所示: try { rsTablesList = stmt.e

我在使用MySQL数据库生成的结果集时遇到了一个问题。我的查询应该在每个表中最多返回一行(我正在按员工编号搜索多个表)。我在一些表格中输入了数据;但是我的测试o/p说resultset包含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}); 
            }



    }

}
我的输出如下所示:

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;
select 'eventname','lastrenewaldate', 'expdate' from dgr where 'empno'=17;
select 'eventname','lastrenewaldate', 'expdate' from eng_prof where 'empno'=17;
select 'eventname','lastrenewaldate', 'expdate' from frtol where 'empno'=17;
执行的查询

行数为0

我在dgr

疑问是

select 'eventname','lastrenewaldate', 'expdate' from crm where 'empno'=17;
select 'eventname','lastrenewaldate', 'expdate' from dgr where 'empno'=17;
select 'eventname','lastrenewaldate', 'expdate' from eng_prof where 'empno'=17;
select 'eventname','lastrenewaldate', 'expdate' from frtol where 'empno'=17;
执行的查询

行数为0

不是在EMP中

我在英语系,教授

疑问是

select 'eventname','lastrenewaldate', 'expdate' from crm where 'empno'=17;
select 'eventname','lastrenewaldate', 'expdate' from dgr where 'empno'=17;
select 'eventname','lastrenewaldate', 'expdate' from eng_prof where 'empno'=17;
select 'eventname','lastrenewaldate', 'expdate' from frtol where 'empno'=17;
执行的查询

行数为0

我在法国

疑问是

select 'eventname','lastrenewaldate', 'expdate' from crm where 'empno'=17;
select 'eventname','lastrenewaldate', 'expdate' from dgr where 'empno'=17;
select 'eventname','lastrenewaldate', 'expdate' from eng_prof where 'empno'=17;
select 'eventname','lastrenewaldate', 'expdate' from frtol where 'empno'=17;
执行的查询

行数为0

(以此类推,最多17张表。)

查询中的“17”是我从用户那里提取的empno。 问题是,我已经在前两个表(crm和dgr)中输入了数据。命令行界面中的同一查询工作;今天早上,我试用了这个程序,它返回了一个包含数据的表(crm)的数据。下一次继续,什么都没有


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

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


谢谢你,@juergend(特别是对这个好的解释)和@nalkun

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


谢谢你,@juergend(特别是对这个好的解释)和@nalkun

不要在列名或表名周围使用引号。如果你需要避开其中的一些,可以使用反勾号。因此使用
where'empno'=17
转换为:获取所有记录,其中字符串
empno
等于数字
17
,这显然总是
false
@juergend实际上我之前在创建没有单引号的查询时遇到了问题。它将返回一个错误,说明找不到这样的列。这里有几篇同样有问题的帖子得出结论说,这是让它工作的方法。我的错误消失了,所以我认为它解决了问题。这是像你说的那样逃离他们吗?在这种情况下,我将改为backticks...columnName'而不是columnName'是go@nailgun好的,谢谢!我会做出改变。:)@juergend刚刚看到了第二部分,感谢您的清晰解释!知道了。我现在得睡觉了,明天早上我会测试一下,然后告诉你我发现了什么!不要在列名或表名周围使用引号。如果你需要避开其中的一些,可以使用反勾号。因此使用
where'empno'=17
转换为:获取所有记录,其中字符串
empno
等于数字
17
,这显然总是
false
@juergend实际上我之前在创建没有单引号的查询时遇到了问题。它将返回一个错误,说明找不到这样的列。这里有几篇同样有问题的帖子得出结论说,这是让它工作的方法。我的错误消失了,所以我认为它解决了问题。这是像你说的那样逃离他们吗?在这种情况下,我将改为backticks...columnName'而不是columnName'是go@nailgun好的,谢谢!我会做出改变。:)@juergend刚刚看到了第二部分,感谢您的清晰解释!知道了。我现在得睡觉了,明天早上我会测试一下,然后告诉你我发现了什么!