Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.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 外键不输出查询数据_Java_Mysql_Jdbc - Fatal编程技术网

Java 外键不输出查询数据

Java 外键不输出查询数据,java,mysql,jdbc,Java,Mysql,Jdbc,我正在尝试输出poemtitle和录制日期。当它运行时,它会输出诗歌标题,然后给出诗歌的创作日期而不是记录日期?这是因为关系吗?很可能是因为选择列表中的* 按返回顺序指定要返回的列 我们只是猜测包含“date recorded”的列的名称及其所在的表: try { Statement s = conn.createStatement(); ResultSet result2 = s.executeQuery("Select Distinct * From Poem p,Recor

我正在尝试输出poemtitle和录制日期。当它运行时,它会输出诗歌标题,然后给出诗歌的创作日期而不是记录日期?这是因为关系吗?

很可能是因为选择列表中的
*

按返回顺序指定要返回的列

我们只是猜测包含“date recorded”的列的名称及其所在的表:

try {
    Statement s = conn.createStatement();
    ResultSet result2 = s.executeQuery("Select Distinct * From Poem p,Recording r Where r.PoemTitle = p.PoemTitle AND r.poemTitle = 'poem1'");
    System.out.print("Result (Select with Join): ");
    while (result2.next()) {
        System.out.println(result2.getString(1)+ " " + result2.getString(2)+ result2.getString(3));
    }
} catch(Exception e) {
    System.out.print(e.getMessage());
}

注:

放弃join操作的老式逗号语法,改用join关键字,并将join谓词从WHERE子句重新定位到ON子句

避免在选择列表中使用
*
。显式列出要返回的列/表达式。当我们阅读代码和SQL语句时,我们不知道返回了多少列,列的顺序是什么,或者数据类型是什么。(我们得去看看表的定义。)

显式列出返回的列/表达式只需要一点点工作。如果代码只编写过,那么就可以了,节省编写时间。但代码的读取量是其编写量的十倍。(带有
*
的SQL语句使得SQL语句实际上无法识别
getString(1)
引用的列

列出列还可以提高数据库的效率,准备一个只有几列的结果集而不是几十列的结果集,我们还可以将一个较小的结果集从数据库传输到客户机。对于列的子集,我们更可能使用覆盖索引进行查询

SELECT p.PoemTitle
     , r.dateRecorded
     , r.readBy
  FROM Poem p
  JOIN Recording r
    ON r.PoemTitle = p.PoemTitle
 WHERE r.poemTitle = 'poem1'
 GROUP
    BY p.PoemTitle
     , r.dateRecorded
     , r.readBy
 ORDER 
    BY p.PoemTitle
     , r.dateRecorded DESC
     , r.readBy