我意识到这个问题已经被问了很多。我确实看过。我花了几个小时环顾四周并试图找出答案。我应该制作一个程序,在数据库中存储相当于约会列表的内容,其中包含描述、日期、开始时间和结束时间。它必须接受用户的输入来添加或取消约会,据我所知,这意味着我需要将字符串转换为日期。
这些是我的进口:
导入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
}
}