У меня есть хранимая процедура, для которой требуются следующие входные параметры:
PROCEDURE `Report_Publishing`(p_StartDate datetime, p_EndDate dateTime, p_Action varchar(15))
Из внешнего интерфейса я получаю даты начала и окончания в следующем формате -start as a String "2017-03-15"
и end as a String "2017-04-17"
,
Ниже приведен фрагмент кода для преобразования дат начала и окончания в требуемый формат хранимой процедуры -
import java.sql.CallableStatement;
import java.sql.Connection;
import java.util.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.*;
import java.text.SimpleDateFormat;
public List<PublishReportDto> getExport(String start, String end, String action, Connection conn, String sql) {
List<PublishReportDto> publishList = null;
try {
CallableStatement cs = conn.prepareCall(sql);
start += " 00:00:00";
end += " 00:00:00";
Date startDate = null;
Date endDate = null;
try {
startDate = (Date) new SimpleDateFormat("yyyy-MM-dd").parse(start);
endDate = (Date) new SimpleDateFormat("yyyy-MM-dd").parse(end);
} catch (ParseException e) {
e.printStackTrace();
}
cs.setDate(1,(java.sql.Date) startDate);
cs.setDate(2,(java.sql.Date) endDate);
cs.setString(3, action);
cs.registerOutParameter(1, java.sql.Types.DATE);
cs.registerOutParameter(2, java.sql.Types.DATE);
cs.registerOutParameter(3, java.sql.Types.VARCHAR);
ResultSet rs = cs.executeQuery();
Я получаю следующее исключение:
Exception in thread "main" java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date
Модификации -
Заменено -
1. import java.sql.Date
с импортом java.util.Date;
2.
cs.setDate(1,startDate);
cs.setDate(2,endDate);
by
cs.setDate(1,(java.sql.Date) startDate);
cs.setDate(2,(java.sql.Date) endDate);
Теперь я получаю -
Exception in thread "main" java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date
Может ли кто-нибудь помочь мне?