departinfo_query.jsp页面用来浏览部门信息,我想在departinfo_modify页面上来修改部门信息departinfo_browse.jsp查看更详细的信息,通过rowid来查询修改记录,但一直出现无效的rowid错误。各位高手清帮帮忙!
departinfo_query.jsp部分代码:
<%String sql;
sql="SELECT rowid,dwdm,dwmc FROM departinfo";
TableModel tableModel= browseSession.getTableModelForSQL(sql);
int rowCount=tableModel.getRowCount();//显示在表中的行数
%><%for(int row=0;row<rowCount;row++){ %>
<tr height="27">
<td><div align="center"><a href="../admin/departinfo_browse.jsp?ROWID=<%=tableModel.getValueAt(row,0)%>"><%=NullToSpace.getNullcheck(tableModel.getValueAt(row,1))%></a> </div></td>
<td > <div align="center"><a href="../admin/departinfo_modify.jsp?ROWID=<%=tableModel.getValueAt(row,0)%>"><%=NullToSpace.getNullcheck(tableModel.getValueAt(row,2))%></a> </div></td>
</tr>
<%}%>
departinfo_modify部分代码:
<%String sql;
Connection conn=((DatabaseDataSource)browseSession.getDataSource()).getConnection() ;
Statement st=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY) ;
sql="SELECT rowid,dwdm,dwmc,intro FROM departinfo where rowid='"+request.getParameter("ROWID")+"'";
ResultSet rs=st.executeQuery(sql) ;
ResultSetMetaData metaData = rs.getMetaData();
rs.next();
%>
<div align="center">
<h3>单位站点信息修改</h3>
<form name="AddNews" method="POST" action="departinfo_save.jsp" onSubmit="return CheckNews();">
<table width=600 border="4" cellspacing="0" bordercolorlight="#669999" bordercolordark="#FFFFFF" class="TD">
<tr class="chinese">
<td width="130" height="25" align="right" bgcolor="#BDD7D9">单位代码 :</td>
<td height="25" colspan="2"><input name="dwdm" type="text" class="chinese" id="dwdm" size="40" maxlength="20" value="<%=rs.getString("dwdm")%>" onBlur="isNull(this);"></td>
</tr>
<tr class="chinese">
<td width="130" height="25" align="right" bgcolor="#BDD7D9">单位名称 :</td>
<td height="25" colspan="2"><input name="dwmc" type="text" class="chinese" id="dwmc" size="40" maxlength="60" value="<%=rs.getString("dwmc")%>" onBlur="isNull(this);"></td>
</tr>
<tr class="chinese">
<td height="25" align="center" colspan="3" bgcolor="#BDD7D9">站点信息</td>
</tr>
<tr>
<td height="25" colspan="3"><div align="center">
<textarea name="intro" class="chinese" style="display:none"><%=rs.getString(4)%></textarea>
<iframe ID="DreamEditor" src="../eWebEditor.jsp?id=intro&style=CoolBlue" frameborder="0" scrolling="no" width="620" height="350"></iframe>
</div></td>
</tr>
<tr>
<td colspan=3><p align="center">
<input type="hidden" name="ROWID" value="<%=rs.getString("ROWID")%>"/>
<input name="action" type="submit" class="button" value="删除信息" >
<input name="action" type="submit" class="button" id="B2" value="修改信息">
<br></p></td>
</tr>
departinfo_browse.jsp部分代码:
<%String sql;
Connection conn=((DatabaseDataSource)browseSession.getDataSource()).getConnection() ;
Statement st=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY) ;
sql="SELECT rowid,dwdm,dwmc,intro FROM departinfo WHERE rowid='"+request.getParameter("ROWID")+"'";
ResultSet rs=st.executeQuery(sql) ;
ResultSetMetaData metaData = rs.getMetaData();
rs.next();
%>
错误代码:
exception javax.servlet.ServletException: ORA-01410: 无效的 ROWID org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.admin.departinfo_005fbrowse_jsp._jspService(departinfo_005fbrowse_jsp.java:131)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.sql.SQLException: ORA-01410: 无效的 ROWID oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)
oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)
oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1451)
oracle.jdbc.ttc7.TTC7Protocol.fetch(TTC7Protocol.java:943)
oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:2126)
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2331)
oracle.jdbc.driver.OracleStatement.doScrollStmtExecuteQuery(OracleStatement.java:6223)
oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:640)
org.apache.jsp.admin.departinfo_005fbrowse_jsp._jspService(departinfo_005fbrowse_jsp.java:87)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
急求大侠帮忙,不胜感激!
departinfo_query.jsp部分代码:
<%String sql;
sql="SELECT rowid,dwdm,dwmc FROM departinfo";
TableModel tableModel= browseSession.getTableModelForSQL(sql);
int rowCount=tableModel.getRowCount();//显示在表中的行数
%><%for(int row=0;row<rowCount;row++){ %>
<tr height="27">
<td><div align="center"><a href="../admin/departinfo_browse.jsp?ROWID=<%=tableModel.getValueAt(row,0)%>"><%=NullToSpace.getNullcheck(tableModel.getValueAt(row,1))%></a> </div></td>
<td > <div align="center"><a href="../admin/departinfo_modify.jsp?ROWID=<%=tableModel.getValueAt(row,0)%>"><%=NullToSpace.getNullcheck(tableModel.getValueAt(row,2))%></a> </div></td>
</tr>
<%}%>
departinfo_modify部分代码:
<%String sql;
Connection conn=((DatabaseDataSource)browseSession.getDataSource()).getConnection() ;
Statement st=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY) ;
sql="SELECT rowid,dwdm,dwmc,intro FROM departinfo where rowid='"+request.getParameter("ROWID")+"'";
ResultSet rs=st.executeQuery(sql) ;
ResultSetMetaData metaData = rs.getMetaData();
rs.next();
%>
<div align="center">
<h3>单位站点信息修改</h3>
<form name="AddNews" method="POST" action="departinfo_save.jsp" onSubmit="return CheckNews();">
<table width=600 border="4" cellspacing="0" bordercolorlight="#669999" bordercolordark="#FFFFFF" class="TD">
<tr class="chinese">
<td width="130" height="25" align="right" bgcolor="#BDD7D9">单位代码 :</td>
<td height="25" colspan="2"><input name="dwdm" type="text" class="chinese" id="dwdm" size="40" maxlength="20" value="<%=rs.getString("dwdm")%>" onBlur="isNull(this);"></td>
</tr>
<tr class="chinese">
<td width="130" height="25" align="right" bgcolor="#BDD7D9">单位名称 :</td>
<td height="25" colspan="2"><input name="dwmc" type="text" class="chinese" id="dwmc" size="40" maxlength="60" value="<%=rs.getString("dwmc")%>" onBlur="isNull(this);"></td>
</tr>
<tr class="chinese">
<td height="25" align="center" colspan="3" bgcolor="#BDD7D9">站点信息</td>
</tr>
<tr>
<td height="25" colspan="3"><div align="center">
<textarea name="intro" class="chinese" style="display:none"><%=rs.getString(4)%></textarea>
<iframe ID="DreamEditor" src="../eWebEditor.jsp?id=intro&style=CoolBlue" frameborder="0" scrolling="no" width="620" height="350"></iframe>
</div></td>
</tr>
<tr>
<td colspan=3><p align="center">
<input type="hidden" name="ROWID" value="<%=rs.getString("ROWID")%>"/>
<input name="action" type="submit" class="button" value="删除信息" >
<input name="action" type="submit" class="button" id="B2" value="修改信息">
<br></p></td>
</tr>
departinfo_browse.jsp部分代码:
<%String sql;
Connection conn=((DatabaseDataSource)browseSession.getDataSource()).getConnection() ;
Statement st=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY) ;
sql="SELECT rowid,dwdm,dwmc,intro FROM departinfo WHERE rowid='"+request.getParameter("ROWID")+"'";
ResultSet rs=st.executeQuery(sql) ;
ResultSetMetaData metaData = rs.getMetaData();
rs.next();
%>
错误代码:
exception javax.servlet.ServletException: ORA-01410: 无效的 ROWID org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.admin.departinfo_005fbrowse_jsp._jspService(departinfo_005fbrowse_jsp.java:131)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.sql.SQLException: ORA-01410: 无效的 ROWID oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)
oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)
oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1451)
oracle.jdbc.ttc7.TTC7Protocol.fetch(TTC7Protocol.java:943)
oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:2126)
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2331)
oracle.jdbc.driver.OracleStatement.doScrollStmtExecuteQuery(OracleStatement.java:6223)
oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:640)
org.apache.jsp.admin.departinfo_005fbrowse_jsp._jspService(departinfo_005fbrowse_jsp.java:87)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
急求大侠帮忙,不胜感激!
sql="SELECT rowid,dwdm,dwmc,intro FROM departinfo WHERE rowid='"+request.getParameter("ROWID")+"'"; request.getParameter("ROWID")不是一个合法的rowid,SQL> select * from a;CNAME
--------------------
张三
李四SQL> select rowid,a.* from a;ROWID CNAME
------------------ --------------------
AAAHbmAABAAAMZCAAA 张三
AAAHbmAABAAAMZCAAB 李四SQL> select rowid,a.* from a where rowid='AAAHbmAABAAAMZCAAB';ROWID CNAME
------------------ --------------------
AAAHbmAABAAAMZCAAB 李四SQL> select rowid,a.* from a where rowid='AAAHbmAABAAAMZCAAB11';select rowid,a.* from a where rowid='AAAHbmAABAAAMZCAAB11'ORA-01410: invalid ROWID
Rowid是一个18位的,常或者短都会有问题
但是我在sql="SELECT rowid,dwdm,dwmc,intro FROM departinfo WHERE rowid='"+request.getParameter("")+"'"; 引用的ROWID是“ROWID= <%=tableModel.getValueAt(row,0)%>“得到的,没有进行的格式上的修改啊?
一楼的朋友能给出修改建议吗?
你把rowid 打印出来,
看看你的rowid是什么值?
怀疑为空
ROWID DWDM DWMC
------------------ ---------- ------------------------
INTROAAAImrAAJAAAAJXAAA 004 孤四污
孤四污水处理站AAAImrAAJAAAAJYAAA 003 孤三污
孤三污水处理站AAAImrAAJAAAAJYAAB 001 孤一污
孤一污水处理站AAAImrAAJAAAAJYAAC 002 孤二污
孤二污水处理站
已选择4行。
我不太明白第一行什么意思?
在oracle的sql/plus里查询的,这样的话,用ROWID= <%=tableModel.getValueAt(row,0)%>能得到正确的rowid值吗?
的结果贴出来,
我让你把程序里面的用RESPONSE.WRITE()出来看看你把程序里面的SQL打印出来看看。
tableModel.getValueAt(row,0);
得到的rowid都是以这种形式来表示的
ROWID=oracle.sql.ROWID@8d5a91
ROWID=oracle.sql.ROWID@3508c0
ROWID=oracle.sql.ROWID@1d183b7
ROWID=oracle.sql.ROWID@1e937f
SQL> select * from a where rowid='oracle.sql.ROWID@8d5a91';select * from a where rowid='oracle.sql.ROWID@8d5a91'ORA-01410: invalid ROWIDSQL> 这个rowid明显不符合规则,检查你的程序。
DELETE FROM czzf_detail WHERE rowid = 'AAAG9wAAJAAAADYAA ' AND hand_flag=1; 这个语句不能执行,报无效rowid.
DELETE FROM czzf_detail WHERE rowid = 'AAAG9wAAJAAAADYAA+' AND hand_flag=1; 这个语句可以执行.
数据库中实际的rowid为"AAAG9wAAJAAAADYAA+",
在jsp传递并通过getParameter获取参数值时,
rowid中的特殊符号(+)被过滤了.
你的rowid好像有空格, 最好检查一下是不是类似的问题.