Note that there are some explanatory texts on larger screens.

plurals
  1. POString to java.sql.Date
    primarykey
    data
    text
    <p>I realize this has been asked a lot. I did actually look. I've spent hours looking around and trying to figure this out. I'm supposed to be making a program that stores what amounts to a list of appointments in a database, with a description, date, start time, and end time. It has to take input from the user to add or cancel appointments, so as far as I know that means I need to convert a string to a date. </p> <p>These are my imports: import java.io.File; import java.io.IOException; import java.sql.Connection; import java.sql.Date; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Time; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Scanner;</p> <p>As you can see, no java.util.Date there. Here is the bit where I'm getting the error:</p> <pre><code>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; } </code></pre> <p>I've added java.sql.Dates to it and mucked about with it a bunch trying to get it to work, but it's still giving me this:</p> <p><code>Exception in thread "main" java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date at Calendar.getDay(Calendar.java:47)</code></p> <p>Any ideas on what I'm doing wrong or how to make this work would be very much appreciated.</p> <p>Edit: I thought perhaps it would help if I added the bit of code that is calling this so maybe it will be more clear how I am trying to use it, so here is the addAppointment() method, so you can see where getDay() is being called and where it's going.</p> <pre><code>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 } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload