为什么查询所有结果错误提示是找不到列名为id的?

为什么查询所有结果错误提示是找不到列名为id的?

import com.mysql.jdbc.TimeUtil;

import java.sql.*;
import java.util.Date;

public class test4 {

   public static void main(String[] args) {
       demo1();
       demo2();
   }

   public static void demo1() {
       /**
        *添加三条数据*/
       Connection connection = null;
       PreparedStatement preparedStatement = null;
       ResultSet resultSet = null;

       try {
           //1加载驱动
           Class.forName("com.mysql.jdbc.Driver");
           //2获取链接
           connection = DriverManager.getConnection("jdbc:mysql:///jdbc", "root", "root");
           //创建SQL语句
           String sql = "insert course(name,category,desp,creatTime) values(?,?,?,?),(?,?,?,?),(?,?,?,?)";
           //预处理SQL语句
           preparedStatement = connection.prepareStatement(sql);
           //添加的具体数据
           Date date = new Date();
           preparedStatement.setString(1, "JAVA零基础");
           preparedStatement.setString(2, "JAVA");
           preparedStatement.setString(3, "JAVA基础语法");
           preparedStatement.setTimestamp(4, new Timestamp(System.currentTimeMillis()));
           preparedStatement.setString(5, "JAVAWEB");
           preparedStatement.setString(6, "JAVA");
           preparedStatement.setString(7, "JSP和SERVLET");
           preparedStatement.setTimestamp(8, new Timestamp(System.currentTimeMillis()));
           preparedStatement.setString(9, "前端小白");
           preparedStatement.setString(10, "前端");
           preparedStatement.setString(11, "HTML/CSS/JS");
           preparedStatement.setTimestamp(12, new Timestamp(System.currentTimeMillis()));
           int i = preparedStatement.executeUpdate();
           if (i > 0) {
               System.out.println("录入成功");
           } else {
               System.out.println("录入失败");
           }


       } catch (Exception e) {
           e.printStackTrace();
       } finally {
           //释放资源
           if (resultSet != null) {
               try {
                   resultSet.close();
               } catch (SQLException e) {
                   e.printStackTrace();
               }
               resultSet = null;

           }
           if (preparedStatement != null) {
               try {
                   preparedStatement.close();
               } catch (SQLException e) {
                   e.printStackTrace();
               }
               preparedStatement = null;

           }
           if (connection != null) {
               try {
                   connection.close();
               } catch (SQLException e) {
                   e.printStackTrace();
               }
               connection = null;
           }

       }


   }

   public static void demo2() {
       /**
        * 显示所有数据
        */
       Connection connection = null;
       PreparedStatement preparedStatement = null;
       ResultSet resultSet = null;

       //1加载驱动
       try {
           Class.forName("com.mysql.jdbc.Driver");
           //2获取链接
           connection = DriverManager.getConnection("jdbc:mysql:///jdbc", "root", "root");
           //创建SQL语句
           String sql = "select ? from course";
           //预处理
           preparedStatement = connection.prepareStatement(sql);
           //实现语句
           preparedStatement.setString(1, "*");
           resultSet = preparedStatement.executeQuery();
           if(resultSet!=null){
           while (resultSet.next()) {
               System.out.println("id" + resultSet.getInt("id")
                       + "课程名称" + resultSet.getString("name") +
                       "课程描述" + resultSet.getString("category") +
                       "创建时间" + resultSet.getDate("creatTime"));
           }}else {
               System.out.println("集合为空");

           }

       } catch (Exception e) {
           e.printStackTrace();
       }finally {
           //释放资源
           if (resultSet != null) {
               try {
                   resultSet.close();
               } catch (SQLException e) {
                   e.printStackTrace();
               }
               resultSet = null;

           }
           if (preparedStatement != null) {
               try {
                   preparedStatement.close();
               } catch (SQLException e) {
                   e.printStackTrace();
               }
               preparedStatement = null;

           }
           if (connection != null) {
               try {
                   connection.close();
               } catch (SQLException e) {
                   e.printStackTrace();
               }
               connection = null;
           }
       }


   }
}

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕珊 2019-04-18 19:36:23

你好!select后面是列名或星号,不能写成?,?是替代要传入的数据,所以不能这么写。这个sql的意思就是查询course表中的数据,不用PreparedStatement就行。

http://img1.sycdn.imooc.com//climg/5cb860b800016a4404930224.jpg

祝学习愉快!

提问者 Daisy3924553 2019-04-18 15:47:29
好帮手慕阿莹 2019-04-18 09:38:42

1、首先,插入的时候,并没有插入id

http://img1.sycdn.imooc.com//climg/5cb7d4ae0001491312130414.jpg

2、接下来就需要看你的数据库中的sql语句,创建表格的时候,有没有把id设置为自增主键呢?如果没有,那id应该是没有被插入进去,建议查看一下数据库确认一下

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


  • 提问者 Daisy3924553 #1
    数据库里面是设置了主键自增长的。直接在数据库里面查可以查到
    2019-04-18 14:13:41
  • 提问者 Daisy3924553 #2
    还有我如果删除查找id,接下来查找name也是同样的报错
    2019-04-18 15:45:43
  • 提问者 Daisy3924553 #3
    老师 我知道问题出在我传输的SQL语句的*号了。*号没有被识别到,所以后面的都没了。 那么 为什么输出“*”会这样呢,应该怎么在后面的设置?号值语法中把星号加进去?
    2019-04-18 16:03:32
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师