java 调用sql表值函数不成功 返回“结果集没有当前行”
在SQLserver中定义了一个表值函数daystate(indate,outdate),两个参数是date类型的可以在数据库中直接执行得出结果,但是在java中调用的时...
在SQL server中定义了一个表值函数daystate(in date, out date),两个参数是date类型的
可以在数据库中直接执行得出结果,但是在java中调用的时候没有结果,是什么原因呢?
java数据库可以连接成功,其他类型的sql语句也可以在java中成功执行获得返回值。
//获取文本框中的字符串
String indate=jtextfield1.getText();
String outdate=jtextfield2.getText();
//将字符串转换为Date类型
java.sql.Date in=java.sql.Date.valueOf(indate);
java.sql.Date out=java.sql.Date.valueOf(outdate);
String sql_daystate="select rid from daystate('"+in+"','"+out+"')";
try {
jdbcfile = new JDBCFile(); //JDBCFile 是自建的一个连接数据库的类
jdbcfile.executeQuery(sql_daystate); //execucteQuery()是一个返回ResultSet的函数
while(jdbcfile.executeQuery(sql_daystate).next()){
System.out.println(jdbcfile.executeQuery(sql_daystate).getString("rid"));
}
} catch (Exception e1) {
e1.printStackTrace();
} 展开
可以在数据库中直接执行得出结果,但是在java中调用的时候没有结果,是什么原因呢?
java数据库可以连接成功,其他类型的sql语句也可以在java中成功执行获得返回值。
//获取文本框中的字符串
String indate=jtextfield1.getText();
String outdate=jtextfield2.getText();
//将字符串转换为Date类型
java.sql.Date in=java.sql.Date.valueOf(indate);
java.sql.Date out=java.sql.Date.valueOf(outdate);
String sql_daystate="select rid from daystate('"+in+"','"+out+"')";
try {
jdbcfile = new JDBCFile(); //JDBCFile 是自建的一个连接数据库的类
jdbcfile.executeQuery(sql_daystate); //execucteQuery()是一个返回ResultSet的函数
while(jdbcfile.executeQuery(sql_daystate).next()){
System.out.println(jdbcfile.executeQuery(sql_daystate).getString("rid"));
}
} catch (Exception e1) {
e1.printStackTrace();
} 展开
展开全部
String sql_daystate="select rid from daystate('"+in+"','"+out+"')";
in和out在字符串sql_daystate中自动转换成为了String,和函数参数类型不匹配。无法运行。
不信你讲sql_daystate打印出来看看。
in和out在字符串sql_daystate中自动转换成为了String,和函数参数类型不匹配。无法运行。
不信你讲sql_daystate打印出来看看。
追问
啊啊啊应该是这个问题 那应该怎么在java的sql语句表示in和out仍然是一个日期类型呢?
追答
你试试cstmt = con.prepareStatement("select rid from daystate(?,?));
cstmt.setDate(1,inDate);
cstmt.setDate(1,outDate);
cstmt.registerOutParameter(1,java.sql.Types.VARCHAR );//函数返回值 inDate,outDate 是两个java.sql.Date 变量
不行只能修改原函数了,将参数改为String了,在函数中先做转换
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询