У меня есть следующие хранимые процедуры:ResultSet пуст, событие, хотя запрос SQL нормально
ALTER PROCEDURE Uspinformation3 (@TypeNr VARCHAR(50),
@Process VARCHAR(50),
@StartDate VARCHAR(50),
@EndDate VARCHAR(50))
AS
BEGIN try
SET dateformat dmy;
SELECT Count(rownr)
FROM diff_ct
WHERE type_number = @TypeNr
AND process = @Process
AND full_time_stamp BETWEEN @StartDate AND @EndDate
END try
Если я выполнить процедуру из SQL Server, это дает мне разыскиваемого ответ
EXEC uspInformation3 1137328582, 427,
{ts '2015-05-24 12:00:00'}, {ts ' 2015-05-24 16:00:00 '}
Но, когда я пытаюсь сделать это с Java, набор результатов всегда пуст. Где я совершаю ошибку? Я предполагаю, что это имеет какое-то отношение к типам данных, которые я использую?
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
Connection conn = DriverManager.getConnection(DB_Connection);
String partno = pn.getText();
String processname = procname.getText();
// String StartTime = DataStart.getText();
String StartTime = "{ts " +"'"+ DataStart.getText() +"'}";
String EndTime = "{ts " +"'"+ DataFinal.getText()+"'}";
System.out.println(StartTime);
Statement state = conn.createStatement();
CallableStatement cs = null;
cs = conn.prepareCall("{call uspInformation3(?,?,?,?)}");
cs.setString(1, partno);
cs.setString(2, processname);
cs.setString(3, StartTime);
cs.setString(4, EndTime);
cs.executeQuery();
ResultSet rs = cs.getResultSet();
System.out.println(rs);
if(rs.next()) {
String totalct = rs.getString(1);
System.out.println(totalct);
totalctno.setText(totalct);
}
Каков тип столбца Full_Time_Stamp? Почему вы используете StartDate & EndDate как varchar, а не Date/Timestamp? – Mubin
Full_Time_Stamp - это дата и время. И я использую их как varchar, потому что из java я не мог отправить их как значения datetime. –
Дата-дата SQL Server сопоставляется с java.sql.Timestamp. Посмотрите здесь возможные сопоставления: https://msdn.microsoft.com/en-us/library/ms378878.aspx – Mubin