如何在java / jsp中执行MS SQL Server存储过程,返回表数据?
|
我很难从Java / jsp执行MS SQL Server存储过程。我希望返回一个表数据集;存储过程的最后一行是来自表的常规select语句。
(从这一点来看,执行存储过程的时间是“ 0”。)
我查看了以下网站以寻求帮助:
www.2netave.com
www.stackoverflow.com
我没有意识到只为存储过程提供功能,因为我使用的是
createStatement()
。
现在,请了解存储过程在SQL Server Management Studio中可以完美执行,并且我在使用createStatement()
在jsp / java中执行临时查询没有问题。
我创建了一个不带参数的简单存储过程,只是为了缩小问题范围:
CREATE PROCEDURE sp_test AS
BEGIN
PRINT \'HELLO WORLD\'
END
这是我的jsp页面中的代码:
Class.forName(\"net.sourceforge.jtds.jdbc.Driver\");
java.sql.Connection conn = java.sql.DriverManager.getConnection(\"jdbc:jtds:sqlserver://MySQLServer:1433/test\", \"user\", \"pass\");
java.sql.CallableStatement cs = conn.prepareCall(\"{call sp_test}\");
java.sql.ResultSet ResultSet = cs.execute();
浏览器告诉我,由于发生内部服务器错误,因此无法显示该页面。我知道这意味着上面的代码有问题。
我尝试了这个:
java.sql.ResultSet ResultSet = cs.executeQuery();
还有这个:
java.sql.CallableStatement cs = conn.prepareCall(\"{execute sp_test}\");
还有这个:
java.sql.CallableStatement cs = conn.prepareCall(\"{exec sp_test}\");
没有任何效果。一旦可以正常工作,就可以运行实际的存储过程,该存储过程从select语句返回表数据。但是我什至无法使这个虚拟存储过程正常工作。
我在这里做错了什么?
谢谢。
更新:
检查服务器日志(IIS)和我的HTTP代理fiddler,并且不报告任何内容。但是,IIS使用tomcat作为jsp页面的servlet引擎。并且tomcat日志文件报告以下内容:
An error occurred at line: 20 in the jsp file: /test.jsp
Type mismatch: cannot convert from boolean to ResultSet
17:
18: java.sql.CallableStatement cs = conn.prepareCall(\"{call sp_test}\");
19:
20: java.sql.ResultSet ResultSet = cs.execute();
21:
22: // java.sql.ResultSet ResultSet = state.executeQuery(SQL);
23:
我尝试将以上内容更改为:
cs.execute();
并且日志文件报告:
- Servlet.service() for servlet jsp threw exception
java.sql.SQLException: The EXECUTE permission was denied on the object \'sp_test\', database \'test\', schema \'dbo\'.
所以,我想我必须向用户支付11英镑。另一个问题是从存储过程返回表数据。
如果我有这样的程序:
CREATE PROCEDURE sp_test2 AS
BEGIN
SELECT * FROM TABLE
END
如何在jsp中操作表格数据?与存储过程相反,ResultSet
是否只适用于即席查询,而存储过程则使用,1ѭ来执行查询?
谢谢。
更新2:
解:
为了操作表数据,我必须使用以下命令:
java.sql.ResultSet RS = cs.executeQuery();
它在ѭ16上失败,并且在命名ResultSet
对象\“ ResultSet \”时失败。过去,它从来没有抱怨过“ 1”。但是由于某种原因,对于存储过程,它不喜欢这种命名约定。
谢谢。
没有找到相关结果
已邀请:
4 个回复
芭隘的盘石
姬第柔炒
连接到sql服务器,但出现错误,但是当我将代码更改为
时,它工作得很好。 我发布我的代码,希望这可以帮助其他人解决我的问题:
眠缝
经过几天的尝试和错误,谷歌搜索并感到困惑;) 它在存储过程下面执行:
右键单击数据库中的存储过程,将获得\“ java SQL Code \”。 像这样的东西:
检查我完成的查询字符串,这是您的作业;) 很抱歉回答了这么久, 自从我几周前注册以获得答案以来,这是我的第一个答案。
赐黄