当前位置: 首页 > 面试题库 >

字符串到java.sql.Date

商佑运
2023-03-14
问题内容

我意识到这已经被问了很多。我确实看过。我花了几个小时环顾四周,并试图解决这个问题。我应该编写一个程序,该程序在数据库中存储相当于约会列表的内容,并包含描述,日期,开始时间和结束时间。它必须接受用户的输入才能添加或取消约会,据我所知,这意味着我需要将字符串转换为日期。

这些是我的导入:import java.io.File; 导入java.io.IOException; 导入java.sql.Connection;
导入java.sql.Date; 导入java.sql.PreparedStatement; 导入java.sql.ResultSet;
导入java.sql.ResultSetMetaData; 导入java.sql.SQLException; 导入java.sql.Time;
导入java.text.DateFormat; 导入java.text.ParseException;
导入java.text.SimpleDateFormat; 导入java.util.ArrayList; 导入java.util.Scanner;

如您所见,那里没有java.util.Date。这是我遇到错误的地方:

private static java.sql.Date getDay()
{
    Scanner in = new Scanner(System.in);
    String input;
    Date apptDay = null;
    DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
    java.sql.Date sqlDate;
    System.out.println("\nPlease enter the date of the appointment, format: yyyy/mm/dd");
    while(apptDay == null)
    {
        try
        {
            input = in.next();
            apptDay = (Date) df.parse(input);
        }
        catch(ParseException e)
        {
            System.out.println("Please enter a valid date! Format is yyyy/mm/dd");
        }
    }
    sqlDate = new Date(apptDay.getTime());
    return sqlDate;
}

我已经在其中添加了java.sql.Dates并对其进行了大量尝试以使其正常工作,但它仍然给了我这个:

Exception in thread "main" java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date at Calendar.getDay(Calendar.java:47)

对于我做错了什么或如何进行这项工作的任何想法,将不胜感激。

编辑:我认为如果我添加调用此代码的代码可能会有所帮助,所以也许它将更清楚我如何使用它,所以这里是addAppointment()方法,因此您可以看到getDay(
)正在被调用以及它的去向。

public static void addAppointment() throws SQLException
{
    //get the info
    String desc = getDesc();
    java.sql.Date apptDay = getDay();
    Time[] times = getTime();
    Time startTime = times[0];
    Time endTime = times[1];
    int key;

    Connection conn = SimpleDataSource.getConnection(); //connect to the database

    try
    {
        PreparedStatement max = conn.prepareStatement("SELECT MAX(ID) FROM Calendar");
        ResultSet result = max.executeQuery();
        key = result.getInt("ID") + 1; 
        PreparedStatement stat = conn.prepareStatement(
                "INSERT INTO Calendar " +
                "VALUES (?, ?, ?, ?, ?)"); 
        stat.setInt(1, key);
        stat.setString(2, desc); 
        stat.setDate(3, apptDay);
        stat.setTime(4, startTime);
        stat.setTime(5, endTime);
        stat.execute();
        System.out.println("\nAppointment added!\n");
    }
    finally
    {
        conn.close(); //finished with the database
    }
}

问题答案:

将输入格式更改为,yyyy-MM-dd并使用java.sql.Date.valueOf(String date)将上述格式的字符串直接转换为java.sql.Date值的方法会容易得多。



 类似资料:
  • 我有以下JSON字符串: 我只想要和。我试过这样的方法: 但我得到了以下错误: 我只使用过几次JSON。有人能帮我吗? 对我来说最好的例子是这样的,我在另一个例子中做过: 可能吗? 现在我已经做到了: 我试着这样做: 然后: 但现在当我做一个Prtinout时,我会得到和以前一样的错误:

  • 我试图获取任意长度的字符串[],并将其打印成字符串,最好使用字段分隔符。现在我有: 但是由于某种原因,它只是返回“第二个”值。我如何使它正确连接这些值? 另外,我可以使用来简化代码吗?谢谢

  • 问题内容: 我如何将字符串转换为? 我看过类似的例子: 但是我的字符串就像: 问题答案: 使用Joda Time时,应使用: 如果使用Java 8或更高版本,请参考hertzi的答案 java.time 从Java 1.8开始,您可以使用java.time类而无需额外的库来实现此目的。请参阅教程。

  • 我遇到了这样一个java字符串,其中以下内容是错误的: 我想这是因为字符串构造函数默认将主体字节[]的编码视为UTF-8,我不是100%确定。我如何能够将此字符串存储在字节[]中,并能够稍后将其转换回来?我想我需要能够确定字节[]的编码方式。我该怎么做呢? 一些上下文:我需要字节[],以便压缩数据,将其存储在数据库中,然后解压缩并将未压缩的字节[]转换回原始字符串。这个字符串最初来自某个下载了网页

  • 问题内容: 我是Java新手,所以我几乎不需要帮助 我有 我想向此数组(脚本)添加新的字符串(string1,string2)作为示例 我想在以后的阶段中不添加新字符串 我该怎么办? 问题答案: 您无法在Java中调整数组的大小。 声明数组的大小后,它将保持固定。 相反,您可以使用具有动态大小的对象,这意味着您无需担心其大小。如果数组列表的大小不足以容纳新值,则它将自动调整大小。

  • 问题内容: 我正在尝试用Java创建一个简单的String to SHA1转换器,这就是我所拥有的… 当我通过它时,我[.知道它可能是像UTF-8这样的简单编码修复程序,但是有人可以告诉我我应该怎么做才能得到我想要的东西吗?还是我这样做完全错误? 问题答案: 这是我将字符串转换为sha1的解决方案。它在我的Android应用程序中运行良好: