【发布时间】:2019-02-06 20:32:41
【问题描述】:
我需要使用 java 从 sql 执行过程。
我已经在 exec MyProcedure 之类的 sql 管理中调用了我的过程并且运行良好。 但是当我在 java 代码中使用它时,我得到了错误:
语句没有返回结果集。
这是我的代码:
ResultSet rs = null;
PreparedStatement cs = null;
Connection conn = DbM.dbConnect();
try {
cs = conn.prepareStatement("exec MyProcedure ?,?,?");
cs.setEscapeProcessing(true);
cs.setQueryTimeout(90);
cs.setString(1, "1");
cs.setString(2, "2019-01-01");
cs.setString(3, "2019-02-02");
rs = cs.executeQuery();
ArrayList<Data> listaObjectX = new ArrayList<Data>();
while (rs.next()) {
Data to = new Data();
to.setEmployeNo(rs.getString(1));
to.setValidFrom(rs.getDate(2));
to.setValidTo(rs.getDate(3));
listaObjectX.add(to);
}
} catch (SQLException se) {
System.out.println("Error al ejecutar SQL"+ se.getMessage());
se.printStackTrace();
throw new IllegalArgumentException("Error al ejecutar SQL: " + se.getMessage());
} finally {
try {
rs.close();
cs.close();
conn.close();;
} catch (SQLException ex) {
ex.printStackTrace();
}
}
运行代码时出现错误:
语句没有返回结果集。
知道如何解决这个问题吗?
如果我把 cs= conn.prepareStatement("exec MyProcedure (?,?,?)"); 我得到错误
“@P0”附近的语法不正确
【问题讨论】:
-
参数周围不应该有括号吗?你用的是什么数据库?
-
我使用 SQL 数据库。
-
@stack SQL 是一种语言,而不是数据库引擎。也许您指的是 Microsoft 的 SQL Server?
-
在
rs.next()循环中添加一个println,看看它是否执行..
标签: java sql sql-server procedure