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

来源:6-6 自由编程

Daisy3924553

2019-04-17 23:03:05

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;
           }
       }


   }
}

写回答

3回答

好帮手慕珊

2019-04-18

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

http://img.mukewang.com/climg/5cb860b800016a4404930224.jpg

祝学习愉快!

0

Daisy3924553

提问者

2019-04-18

http://img.mukewang.com/climg/5cb82b8900010aee11760375.jpg

0

好帮手慕阿莹

2019-04-18

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

http://img.mukewang.com/climg/5cb7d4ae0001491312130414.jpg

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

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


0
haisy3924553
h 老师 我知道问题出在我传输的SQL语句的*号了。*号没有被识别到,所以后面的都没了。 那么 为什么输出“*”会这样呢,应该怎么在后面的设置?号值语法中把星号加进去?
h019-04-18
共3条回复

0 学习 · 8016 问题

查看课程