2015-08-19 6 views
0

У меня есть JDateChooser в моей форме. и мне нужно вставить его значение Date в DB. Я использовал этот метод, только после того, как «общественного класса внеклассного проходит javax.swing.JInternalFrame {»,Как вставить в значение выбора JDate в db

и метод я использовал упомянуто ниже,

public static java.sql.Date convertUtilDateToSqlDate(java.util.Date date){ 

       if(date != null) { 
       java.sql.Date sqlDate = new java.sql.Date(date.getTime()); 
        return sqlDate; 
        } 
       JOptionPane.showMessageDialog(null, "No Dates are  Specified!"); 
       return null; 
       } 

и В actionPerformed случае моей кнопки Добавить в я использовал

   Connection c=DBconnect.connect(); 
      Statement s = (Statement) c.createStatement(); 
      PreparedStatement statement = c.prepareStatement("INSERT into nonacademic (empId, name, Dob, JoinedDate) VALUES (?,?,?,?)"); 

      statement.setString(1,txtEmpId.getText()); 
      statement.setString(2, txtNmae.getText()); 
      statement.setDate(3,convertUtilDateToSqlDate((Date)  jDateChooserDOB.getDate())); 
      statement.setDate(4, convertUtilDateToSqlDate((Date) jDateChooserDateOfJoined.getDate())); 

statement.executeUpdate();

Проблемы Это дает эту ошибку, java.lang.ClassCastException: java.util.Date не может быть приведен к java.sql.Date

Когда я искать решение этого, я обнаружил, что это Ошибка выполнения происходит из-за родительского класса. Экземпляр переходит в дочерний класс. Так что вы можете дать мне предложение исправить этот код.

Примечание: После того, как вы сделали код в коде, когда я выбираю дату в JDateChooser Появляется как это 2015-08-06, Перед тем, как писать код выше. Появляется как 6 августа 2010 года.

+0

Вы пытались избавиться от '(Date)' в своих 'statement.setDate' вызовах – MadProgrammer

+0

, когда я набираю statement.setDate (3, convertUtilDateToSqlDate (jDateChooserDOB.getDate())); (без (Date)), он покажет сообщение об ошибке и отобразит сообщение о том, чтобы его отличить. –

+0

Затем 'jDateChooserDOB.getDate()', вероятно, не возвращает 'java.util.Date', на догадку ... – MadProgrammer

ответ

0

Try ниже утверждений,

statement.setDate(3,convertUtilDateToSqlDate(jDateChooserDOB.getDate())); 
statement.setDate(4, convertUtilDateToSqlDate(jDateChooserDateOfJoined.getDate())); 

Причина: Это из-операторов импорта. Возможно, вы импортировали только код java.sql.Date или java.sql. * В свой код. Все классы «Дата», упомянутые в вашей программе, будут обрабатываться как java.sql.Date. Поэтому JVM пытается преобразовать java.util.Date в java.sql.Date в эти выражения и исключение throwing.

+0

Я импортирую java.util.Date в свой код, как вы упомянули здесь У меня есть только импорт java.sql.Date Затем я удалил (Date) из statement.setDate. Моя проблема была решена, но я все еще путаю одну вещь, которая От импорта java.util.Date. Как это сделать родительский экземпляр (java.util.date) в его дочерний экземпляр (java.sql.date), кто-то может дать мне ясное объяснение. Пожалуйста, мне будет полезно улучшить мои java Знание :-) :-) –

+0

Я импортирую java.util.Date в свой код. и как вы упомянули здесь, я только импортировал java.sql.Date Затем я удалил (Date) из statement.setDate. Моя проблема была решена, но я все еще запутался в одной вещи: от импорта java.util.Date. Как это сделать родительский экземпляр (java.util.date) в его дочерний экземпляр (java.sql.date), может кто-то дать мне ясное объяснение Пожалуйста, мне будет полезно улучшить свои знания Java :-) :-) –