首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

com.microsoft.sqlserver.jdbc.SQLServerException: 没有为参数号 2 设置值。

2013-09-11 
hibernate3.1调用存储过程有问题。急...急...color#FF0000]这个问题已经困扰我很久了,这是我前段时间发的

hibernate3.1调用存储过程有问题。急...急...
color=#FF0000]这个问题已经困扰我很久了,这是我前段时间发的贴,到现在还没有的到好的解决方案,麻烦大家帮我解决下。谢谢,[/color]
前贴: http://topic.csdn.net/u/20080219/09/392dc641-12c4-4426-ba89-841bcc09e05f.html?seed=2134387670

经过这几天我在网络上找的解决方案,目前是报这样的错误。错误信息如下:
HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: could not execute query
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

org.hibernate.exception.GenericJDBCException: could not execute query
org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:82)
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:70)
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
org.hibernate.loader.Loader.doList(Loader.java:1596)
org.hibernate.loader.Loader.list(Loader.java:1577)
org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:112)
org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1414)
org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:153)
com.ssh.hbm.UserInfoDAO.select_User(UserInfoDAO.java:43)
com.ssh.struts.action.UserInfoAction.execute(UserInfoAction.java:42)
org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

com.microsoft.sqlserver.jdbc.SQLServerException: 没有为参数号 2 设置值。
com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.buildParamTypeDefinitions(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.buildPreparedStrings(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doPrepExec(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(Unknown Source)
com.microsoft.sqlserver.jdbc.TDSCommand.execute(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(Unknown Source)
com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.execute(Unknown Source)
org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:168)
org.hibernate.dialect.SybaseDialect.getResultSet(SybaseDialect.java:142)
org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:127)
org.hibernate.loader.Loader.getResultSet(Loader.java:1269)
org.hibernate.loader.Loader.doQuery(Loader.java:391)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
org.hibernate.loader.Loader.doList(Loader.java:1593)


org.hibernate.loader.Loader.list(Loader.java:1577)
org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:112)
org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1414)
org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:153)
com.ssh.hbm.UserInfoDAO.select_User(UserInfoDAO.java:43)
com.ssh.struts.action.UserInfoAction.execute(UserInfoAction.java:42)
org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.26 logs.

说下我的项目,ajax+struts1.2+spring1.2+hibernate3.1,数据库是sql server2000,容器tomcat5.5、jdk1.5

因为这是做测试存储的过程,有些地方方法我就没有写太完整,关于调用存储的代码我都贴出来。

这是我UserInfoAction.java中调用的其中一个方法,

Java code
    public ActionForward execute(ActionMapping mapping, ActionForm form,            HttpServletRequest request, HttpServletResponse response) {        // TODO Auto-generated method stub        System.out.println("userInfoAction ");        userinfodao.select();//这方法是没有问题,是做一般的查询的,代码会在下面贴出来        System.out.println("----------------");                //这里就是UserInfoAction.java中的42行,是掉用存储的相关方法。这里出错。        userinfodao.select_User();                         return null;    }


这是我这是我UserInfoDAO.java中调用的其中一些方法,
Java code
//这个方法是做一般查询的方法,用做测试这个项目架构的,这个方法调用没有,说明正框架结合也是没有问题的。    public Collection select(){        Collection c=null;        c=this.getSession().createQuery("From UserInfo").list();        Iterator i=c.iterator();        while(i.hasNext()){            UserInfo user=(UserInfo)i.next();            System.out.println(user.getUserName());        }        return c;    }    //这个是掉用存储过程的的方法。    public void select_User(){        List list=null;                //在这个地方出错。也就UserInfoDAO.java类中的43行        list=this.getSession().getNamedQuery("getUserInfo").setString(0, "a").list();        Iterator i=list.iterator();        while(i.hasNext()){            UserInfo user=(UserInfo)i.next();            System.out.println(user.getUserName());        }    }


相关hibernate配置问题

UserInfo.hbm.xml:如下
XML code
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!--     Mapping file autogenerated by MyEclipse - Hibernate Tools--><hibernate-mapping>    <class name="com.ssh.hbm.UserInfo" table="userInfo" schema="dbo" catalog="Mydata">        <id name="userId" type="java.lang.Integer">            <column name="userId" />            <generator class="identity" />        </id>        <property name="userName" type="java.lang.String">            <column name="userName" length="30" />        </property>        <property name="address" type="java.lang.String">            <column name="address" length="100" />        </property>    </class><!-- 下面是存储的相关配置--!>    <sql-query name="getUserInfo" callable="true">    <return alias="UserInfo" class="com.ssh.hbm.UserInfo">        <return-property name="userId" column="userId"/>           <return-property name="userName" column="userName"/>           <return-property name="address" column="address"/>    </return>    {?=call getUserInfo(?)}    </sql-query></hibernate-mapping> 




[解决办法]
没有为参数号 2 设置值
{getUserInfo(?)}

把你的存储过程贴上来,我怀疑他需要2个参数


[解决办法]
如果你只有一个参数,UserInfo.hbm.xml配置用这个
Java code
 <sql-query name="getUserInfo" callable="true">        <return alias="UserInfo" class="com.ssh.hbm.UserInfo">            <return-property name="userId" column="userId"/>           <return-property name="userName" column="userName"/>           <return-property name="address" column="address"/>           </return>    {call getUserInfo(?)}    </sql-query>
我的异常网推荐解决方案:The server encountered an internal error () that prevented it from fulfilling this request.,http://www.myexception.cn/java-web/317.html

热点排行