当前位置: 首页 > 知识库问答 >
问题:

使用java在mysql数据库中插入日期

严安志
2023-03-14

我正在尝试使用Java jdbc连接在mysql数据库中插入一行。。。。

这是我的密码,

    public class DBPreparedStatement2 {


          public static void main(String[] args) throws ParseException{

         try {

             ArrayList<Student> slist = new ArrayList<Student>();


             String sDate1="1998/11/04";
             java.sql.Date dob=(java.sql.Date) new SimpleDateFormat("yyyy/MM/dd").parse(sDate1);

             slist.add(new Student(6,"James","Bond",dob,10,"jb@yahoo.com"));

             Class.forName("com.mysql.jdbc.Driver");
             Connection 
             con=DriverManager.getConnection("jdbc:mysql://localhost:3306/school","root","root");

             String insertCommand="INSERT INTO STUDENTS VALUES(?,?,?,?,?,?)";

             PreparedStatement ps=con.prepareStatement(insertCommand);

             for(Student student:slist) {
                ps.setInt(1, student.id);
                ps.setString(2, student.firstName);
                ps.setString(3, student.lastName);
                ps.setDate(4, student.dob);
                ps.setInt(5, student.studClass);
                ps.setString(6, student.email);
        }

    }catch(ClassNotFoundException e1) {
        e1.printStackTrace();
    }catch(SQLException e) {
        e.printStackTrace();
    }

}

}

当我尝试运行代码时,我得到类强制转换异常。。。非常感谢您的帮助。这是我的学生。java类

    import java.sql.Date;

    public class Student {

        int id;
        String firstName;
        String lastName;
        Date dob;
        int studClass;
        String email;

    public Student() {  }

          public Student(int id,String firstName,String lastName,java.sql.Date dob,int studClass,String email) {

        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
        this.dob = dob;
        this.studClass = studClass;
        this.email = email;
    }

}

当我运行代码时,我得到以下错误:线程“main”java中出现异常。lang.ClassCastException:类java。util。日期不能转换为java类。sql。jdbcsample中的日期(java.util.Date位于加载器“bootstrap”的模块java.base中;java.sql.Date位于加载器“platform”的模块java.sql中)。DBPreparedStatement2。main(DBPreparedStatement2.java:25)

共有1个答案

楚嘉
2023-03-14

您的例外来自这一行:

java.sql.Date dob = (java.sql.Date) new SimpleDateFormat("yyyy/MM/dd").parse(sDate1);

因为parse将返回一个java。util。日期,而不是java。sql。日期。您不能强制转换为java。sql。日期,因为两者不相关。

您可以通过实例化java.sql.Date来摆脱它

java.sql.Date dob = new java.sql.Date(new SimpleDateFormat("yyyy/MM/dd")
                                              .parse(sDate1)
                                              .getTime());

但我建议您避免使用java。util。日期,改为使用:

  DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
  LocalDate localDate = LocalDate.parse(sDate1, formatter);
  java.sql.Date dob   = java.sql.Date.valueOf(localDate);
 类似资料:
  • 我正在尝试使用JavaFX从数据选择器向mysql数据库插入日期。我累了提交这个代码。 当我运行我的程序时,它给了我这个错误

  • 注意:在MySQL表中,此列的数据类型我选择了日期数据类型 我只是有问题的日期部分查询插入日期:

  • 问题内容: 我需要找出一种将带有字段的记录插入数据库的方法,但我陷入了困境。 有谁知道我该怎么做?现在我有类似的东西。 但是,当我运行类似这样的命令时,出现错误:值的字符串表示形式的语法不正确。 这是sql语句的样子: 谢谢 问题答案: 当然,这将使你的代码更好,但是要回答你的问题,你需要告诉的字符串表示形式。在中(你不指定数据库供应商的名称),使用以下函数将字符串日期转换为:

  • 问题内容: 我试图将图像存储在数据库中,由于某种原因,它似乎无法正常工作。这是我桌子的结构。 这是我的查询,它插入图像或至少多数民众赞成在什么: 如果我打印file_get_contents($ tmp_image)的值,那么屏幕上会有大量数据。但是,此值不会存储在数据库中,这就是我面临的问题。 问题答案: 问题 这会在PHP中创建一个名为的字符串。暂时不要使用MySQL,因为您尚未执行任何查询。

  • 问题内容: 我使用Google Maps API制作了一个非常简单的页面,其中有几个字段,用户将在其中放置一些数据。看起来像- http://aiworker2.usask.ca/marker_field_db.html 我要做的是使用javascript / Ajax将数据存储到MySQL数据库中。我发现了几个使用Jquery的示例。我是这个javascript / Ajax / Jquery平

  • 问题内容: 我在同一服务器上的2个不同数据库中有2个相同的表。将数据从表复制到另一个表的最佳方法是什么? 问题答案: 使用: 存在是经过简化的,但是如果有主键/ auto_increment可以担心/等,那么您就省去了。