Java 结果集为空,尽管sql查询正常
我有以下存储过程:Java 结果集为空,尽管sql查询正常,java,sql-server,resultset,Java,Sql Server,Resultset,我有以下存储过程: ALTER PROCEDURE Uspinformation3 (@TypeNr VARCHAR(50), @Process VARCHAR(50), @StartDate VARCHAR(50), @EndDate VARCHAR(50)) AS BE
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);
}
是否尝试将参数作为字符串发送?或者将参数类型更改为
datetime
第二次约会时也有额外的空间
EXEC uspInformation3 1137328582, 427,
'2015-05-24 12:00:00', '2015-05-24 16:00:00';
是否尝试将参数作为字符串发送?或者将参数类型更改为
datetime
第二次约会时也有额外的空间
EXEC uspInformation3 1137328582, 427,
'2015-05-24 12:00:00', '2015-05-24 16:00:00';
全日制邮票栏的类型是什么?为什么使用StartDate和EndDate作为varchar而不是日期/时间戳?完整的时间戳是日期时间。我将它们用作varchar,因为在java中,我无法将它们作为datetime值发送。SQL Server的datetime映射到java.SQL.Timestamp。在这里查找可能的映射:感谢您的帮助:)我能够解决它,在我将其设置为时间戳之后,您还应该学习正确缩进代码。使阅读代码变得更容易。全日制戳记列的类型是什么?为什么使用StartDate和EndDate作为varchar而不是日期/时间戳?完整的时间戳是日期时间。我将它们用作varchar,因为在java中,我无法将它们作为datetime值发送。SQL Server的datetime映射到java.SQL.Timestamp。在这里查找可能的映射:感谢您的帮助:)我能够解决它,在我将其设置为时间戳之后,您还应该学习正确缩进代码。使阅读代码更容易。是的。如果将其用作字符串,则会出现以下错误:将varchar数据类型转换为datetime数据类型导致值超出范围。因为Full\u Time\u Stamp具有datetime类型。请在此处尝试此方法,使用prepareStatement而不是prepare Call谢谢您的帮助。在我把参数改为时间戳后,我解决了这个问题。是的。如果将其用作字符串,则会出现以下错误:将varchar数据类型转换为datetime数据类型导致值超出范围。因为Full\u Time\u Stamp具有datetime类型。请在此处尝试此方法,使用prepareStatement而不是prepare Call谢谢您的帮助。在我将参数更改为时间戳之后,我解决了这个问题。