这是jsp文件中的部分,试过从command line直接运行该语句,可以成功,但是奇怪的是在jsp文件中却不行.而且我试过增加(insert into values)可以,删除也可以(delete from where).请问这是什么原因呢??
if(request.getParameter("aid")!=null)
{
String text=Bytes(request.getParameter("respon1"));
sql="update comment set response="+text+" where comment_id="+request.getParameter("aid");
stmt.executeUpdate(sql);
out.print("<script>alert('回复修改成功!');window.location='ma_comment.jsp';</script>");
}
if(request.getParameter("res")!=null)
{
String text=Bytes(request.getParameter("respon2"));
sql="update pages set name="+text+" where id="+request.getParameter("res");
stmt.executeUpdate(sql);
String aid=request.getParameter("res");
out.print("<script>alert('回复成功!');window.location='ma_comment.jsp';</script>");
}
if(request.getParameter("aid")!=null)
{
String text=Bytes(request.getParameter("respon1"));
sql="update comment set response="+text+" where comment_id="+request.getParameter("aid");
stmt.executeUpdate(sql);
out.print("<script>alert('回复修改成功!');window.location='ma_comment.jsp';</script>");
}
if(request.getParameter("res")!=null)
{
String text=Bytes(request.getParameter("respon2"));
sql="update pages set name="+text+" where id="+request.getParameter("res");
stmt.executeUpdate(sql);
String aid=request.getParameter("res");
out.print("<script>alert('回复成功!');window.location='ma_comment.jsp';</script>");
}
这个变量两边对于 字符串这些需要加 单引号。
如
"update comment set response='"+text+"' where comment_id="+request.getParameter("aid");
如果还不对,把你拼的SQL打印出来在数据库中执行以下看是否正确。
应该是where条件的问题。
或者看一下stmt.executeUpdate(sql);的返回值。
1.mysql故障--已经解除了用命令行运行过并且从命令行以及mysqlfront里面看到了结果
2.程序本身有故障
(1)数据+text+有问题---但是应用同样的变量用insert命令可以成功,所以应该不是+text+的问题
(2)后面的where条件的问题---能够把相应字段的数据变成null,所以也应该不是这个的问题....
请大家帮我看看我这么想有没有错,谢谢大家了!
是否有设置con.setAutoCommit(false);
如果设置了必须手动提交con.commit();
org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 22 in the jsp file: /admin/ma_comment.jsp
Duplicate local variable sql
19: if(request.getParameter("aid")!=null)
20: {
21: String text=Bytes(request.getParameter("respon1"));
22: String sql = "update comment set response='"+text+"' where comment_id='"+request.getParameter("aid") + "'";
23: System.err.println("sql = " + sql);//结果copy到数据库中执行
24: int cnt = stmt.executeUpdate(sql);
25: System.err.println("cnt = " + cnt );// 看看结果是不是为0,如果为0就是没成功
Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:97)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:457)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:644)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:358)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
上网查了查说是原因可能是有两个局部变量String sql但是找了找并没有
于是我把String去掉,去掉之后接着运行了.和以前一样,没有别的什么反应.我在javabean里面看了看并没有设置con.setAutoCommit(false);
我把javabean和整个程序附上给你来看看吧.
-----------------------------------<-javabean->------------------------------------
package test.db;
import java.io.*;
import java.sql.*;
public class DatabaseCon {
public Connection con;
public String dbDriver="org.gjt.mm.mysql.Driver";
public String URL = "jdbc:mysql://localhost:3306/thec";
public String Message;
public Statement stmt=null;
public boolean connection() {
try{
Class.forName(dbDriver);
}
catch(ClassNotFoundException ex){
Message=ex.getMessage();
System.exit(-1);
}
try{
con = DriverManager.getConnection(URL,"root","1");
return true;
}
catch(SQLException ex){
Message=ex.getMessage();
return false;
}
}
public ResultSet exeSQL( String sqlstr) {
try{
con = DriverManager.getConnection(URL,"root","1");
stmt=con.createStatement();
ResultSet rs=stmt.executeQuery(sqlstr);
return rs;
} catch(Exception ex){
Message=ex.getMessage();
}
return null;
}
public String getString(ResultSet rs,String str){
try{
return rs.getString(str);
}catch(Exception ex){
Message=ex.getMessage();
}
return null;
}
public boolean close(){
try{
con.close();
return true;
}
catch(Exception ex){
Message=ex.getMessage();
return false;
}
}
}
--------------------<-conn.jsp->------------------------------------
<%@ page import="java.sql.*"%>
<jsp:useBean id="dbBean" scope="session" class="test.db.DatabaseCon" />
<%
//String filename=getServletConfig().getServletContext().getRealPath("/mybook/inc/db.mdb");
//String strurl="jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ="+filename;
//Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
dbBean.connection();
Connection conn= dbBean.con;
Statement stmt=conn.createStatement();
String sql;
ResultSet rs;
%>
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>查看和修改</title>
<style type="text/css">
<!--
body,td,th {
font-size: 12px;
}
-->
</style></head>
<%@ include file="../inc/conn.jsp"%>
<%@ include file="../inc/format.jsp"%>
<link href="../style1.css" rel="stylesheet" type="text/css" />
<body>
<%
//修改操作
if(request.getParameter("aid")!=null)
{
String text=Bytes(request.getParameter("respon1"));
sql = "update comment set response='"+text+"' where comment_id='"+request.getParameter("aid") + "'";
System.err.println("sql = " + sql);//结果copy到数据库中执行
int cnt = stmt.executeUpdate(sql);
System.err.println("cnt = " + cnt );// 看看结果是不是为0,如果为0就是没成功
//out.print(request.getParameter("abook"));
//out.print(request.getParameter(aid));
//out.print(catename);
out.print("<script>alert('回复修改成功!');window.location='ma_comment.jsp';</script>");
}
//添加操作
if(request.getParameter("res")!=null)
{
String text=Bytes(request.getParameter("respon2"));
sql="update pages set name='"+text+"' where id="+request.getParameter("res");
stmt.executeUpdate(sql);
String aid=request.getParameter("res");
//out.print(request.getParameter("abook"));
//out.print(request.getParameter(aid));
//out.print(catename);
out.print("<script>alert('回复成功!');window.location='ma_comment.jsp';</script>");
}
//删除操作
if(request.getParameter("delid")!=null)
{
sql="delete from comment where comment_id="+request.getParameter("delid");
//out.print(sql);
stmt.executeUpdate(sql);
out.print("<script>alert('评论删除成功!');window.location='ma_comment.jsp';</script>");
}%>
<%
int intPageSize; //一页显示的记录数
int intRowCount; //记录总数
int intPageCount; //总页数
int intPage; //待显示页码
String strPage,lei;
int i;
// 设置一页显示的记录数
intPageSize =10;
//取得待显示页码
strPage = request.getParameter("page");
lei = request.getParameter("Cateid"); //图书类别
String Cateid=lei;
if(lei==null){lei="1";}
//while(rs.next()){
if(strPage==null){
//表明在QueryString中没有page这一个参数,此时显示第一页数据
intPage = 1;
} else{
//将字符串转换成整型
intPage = java.lang.Integer.parseInt(strPage);
}if(intPage< 1){
intPage = 1;
}
dbBean.connection();
Statement selstmt =dbBean.con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
//sql="select * from tushumingxi where lieID="+Cateid;
sql="select * from comment";
// String sort=request.getParameter("sort");
// if(sort!=null){
// sql="select * from tushumingxi where lieID="+Cateid+" order by "+request.getParameter("sort")+" desc";
// sql="select * from tushumingxi where lieID="+Cateid;
// out.print("select * from tushumingxi where lieID="+Cateid+" order by "+request.getParameter("sort")+" desc");
// sql="select * from tushumingxi where [lieID]=["+Cateid+"] order by ["+sort+"] desc";
// }
rs=selstmt.executeQuery(sql);
//获取记录总数
rs.last();
intRowCount = rs.getRow();
//记算总页数
intPageCount = (intRowCount+intPageSize-1)/intPageSize;
//调整待显示的页码
if(intPage>intPageCount) intPage = intPageCount;
if(intPageCount>0){
//将记录指针定位到待显示页的第一条记录上
rs.absolute((intPage-1) * intPageSize+1);
//显示数据
}
i = 0;
//rs.next();
//while(i<intPageSize && !rs.isAfterLast()){ %>
<table width="97%" border="0" cellspacing="0" cellpadding="0" align="center" ID="Table11">
<tr>
<td class="s" align="center" height="28" valign="bottom" width="200"><font color="#000099"> 搜索结果共:[<font color="#000099"> <%=intRowCount%></font> ]条</font></td>
<td width="546" height="28" align="right" class="s">
<table border="0" class="s" ID="Table12">
<form action="" method="post" ID="Form1">
<tr>
<td> <a href="ma_comment.jsp?Cateid=<%=Cateid%>"><font color="#003399">首页</font></a>
<%if(intPage>1){%><a href="ma_comment.jsp?Cateid=<%=Cateid%>&page=<%=intPage-1%>">
<font color="#003399">上一页</font></a>
<%}%>
<%if(intPage<intPageCount){%><a href="ma_comment.jsp?Cateid=<%=Cateid%>&page=<%=intPage+1%>">
<font color="#003399">下一页 </font></a>
<%}%>
<a href="ma_comment.jsp?Cateid=<%=Cateid%>&page=<%=intPageCount%>"><font color="#003399">尾页</font></a><font color="#003399"> 页次:<font color="red"><%=intPage%>/<%=intPageCount%></font>页 每页<font color="#FF0000"><%=intPageSize%></font>条
跳转页</font>
<input name="page" size="4" style="BACKGROUND-COLOR: #f9fcff; BORDER-BOTTOM: #5f98e7 1px solid; BORDER-LEFT: #5f98e7 1px solid; BORDER-RIGHT: #5f98e7 1px solid; BORDER-TOP: #5f98e7 1px solid; FONT-SIZE: 9pt"
onMouseOver="this.focus()" onFocus="this.select()" maxlength="10" ID="Text1">
<input type="submit" name="submit" value="GO" ID="Submit1"> </td>
</tr>
</form>
</table> </td>
</tr>
</table>
<%
while(i<intPageSize && !rs.isAfterLast()){
String categoryid=rs.getString("comment_id");
String thers=Bytes(request.getParameter("response"));
%>
<table width="95%" border="0" align="center" cellpadding="0" cellspacing="0" style="border:1px solid #B7B7B7;">
<tr>
<td width="80%" height="1" bgcolor="#FF00FF"></td>
</tr>
<tr>
<td height="25" bgcolor="#E7E7E2"><span class="bt"> [用户]:<%=rs.getString("user")%></span></td>
<td height="25" bgcolor="#E7E7E2">
<a href="ma_comment.jsp?delid=<%=categoryid%>"><font color="#FF0000">[ 删 除 ]</font></a> </td> <td height="25" bgcolor="#E7E7E2">
<a href="ma_comment.jsp?creat=<%=categoryid%>"><font color="#FF0000">[ 回 复 ]</font></a> </td>
</tr>
<tr>
<td colspan="2"> [内容]:
<%=rs.getString("atext")%> </td>
<td colspan="2"> [日期]:
<%=rs.getString("date")%> </td>
</tr>
<tr>
<td colspan="2"> [回复]:
<%=rs.getString("response")%> </td>
</tr>
<tr>
<td><%if(request.getParameter("thers")==null && (request.getParameter("creat")!=null) && (request.getParameter("creat").equals(categoryid))){%>
<textarea name="respon2" cols="75" rows="5" wrap="physical" id="respon2"></textarea></td>
<td><a href="ma_comment.jsp?res=<%=categoryid%>">更 新</a> <a href='ma_comment.jsp'>取 消</a></td>
<%}%>
</tr>
<tr>
<td><textarea name="respon1" cols="75" rows="5" wrap="physical" ID="respon1"><%=rs.getString("response")%></textarea>
<td><a href="ma_comment.jsp?aid=<%=categoryid%>">更 新</a> <a href='ma_comment.jsp'>取 消</a></td>
</td>
</tr>
</table> <%i++;
rs.next();
}
%></body>
</html>
非常感谢你对我的帮助~~
org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 22 in the jsp file: /admin/ma_comment.jsp
Duplicate local variable sql
19: if(request.getParameter("aid")!=null)
20: {
21: String text=Bytes(request.getParameter("respon1"));
22: String sql = "update comment set response='"+text+"' where comment_id='"+request.getParameter("aid") + "'";
23: System.err.println("sql = " + sql);//结果copy到数据库中执行
24: int cnt = stmt.executeUpdate(sql);
25: System.err.println("cnt = " + cnt );// 看看结果是不是为0,如果为0就是没成功
Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:97)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:457)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:644)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:358)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
上网查了查说是原因可能是有两个局部变量String sql但是找了找并没有
于是我把String去掉,去掉之后接着运行了.和以前一样,没有别的什么反应.我在javabean里面看了看并没有设置con.setAutoCommit(false);这样行不行?
24: int cnt = stmt.executeUpdate(sql);
25: System.err.println("cnt = " + cnt );// 看看结果是不是为0,如果为0就是没成功23行会输出sql,把它的内容copy在数据库中执行,看是否修改成功
25行会输出cnt,看是不是0
结果是这样子的,应该是text变量的传递出了问题,我去看看,谢谢你!!
sql = update comment set response='null' where comment_id='1'
cnt = 1
???????????????????ínull
???????????????????ínull
现在虽然是有突破了,至少是能确定问题就发生在程序里,但是问题依旧是解决不了,我在同一个页面(和上面的jsp文件不一样)使用中一样的传递方式,但是insert的可以成功,update却是成功不了。我这个是从书上摘下来的代码然后自己更改的,刚才从网上下载了源代码试了试,好像源代码也是不行。同样是insert无压力,update不行.
sql = insert into pages(name,highLevelID,pageurl) values('测试',0,'aaaaa')
cnt = 1
sql = update pages set name='null',pageurl='null' where id=22
???????????????????ínull
???????????????????ínull
cnt = 1
具体代码如下
我把两个都按照你说的加上了system.err.println的代码。
-----------------------------------------------------------------------
//添加操作
if(request.getParameter("Submit")!=null)
{
String catename=Bytes(request.getParameter("BigClassName1"));
String pageurl=Bytes(request.getParameter("BigClassName2"));
String highid=request.getParameter("BigClassID");
sql="insert into pages(name,highLevelID,pageurl) values('"+catename+"',"+highid+",'"+pageurl+"')";
System.err.println("sql = " + sql);//结果copy到数据库中执行
int cnt = stmt.executeUpdate(sql);
System.err.println("cnt = " + cnt );// 看看结果是不是为0,如果为0就是没成功
stmt.executeUpdate(sql);
out.print("<script>alert('添加栏目类别成功!');window.location='ma_pages.jsp';</script>");
}//修改操作
if(request.getParameter("aid")!=null)
{
String catename=Bytes(request.getParameter("pagename"));
String pageurl=Bytes(request.getParameter("pageurl"));
sql="update pages set name='"+catename+"',pageurl='"+pageurl+"' where id="+request.getParameter("aid");
System.err.println("sql = " + sql);//结果copy到数据库中执行
int cnt = stmt.executeUpdate(sql);
System.err.println("cnt = " + cnt );// 看看结果是不是为0,如果为0就是没成功
stmt.executeUpdate(sql);
String aid=request.getParameter("aid");
//out.print(request.getParameter("abook"));
//out.print(request.getParameter(aid));
//out.print(catename);
out.print("<script>alert('栏目类别修改成功!');window.location='ma_pages.jsp';</script>");
}
---------------------------------------------------------
变量:
insert的
<td width="148" align="center"><input name="BigClassName1" type="text" id="BigClassName1" size="15"></td>
<td width="104" height="20" align="center">子栏目连接:</td>
<td width="148" align="center"><input name="BigClassName2" type="text" id="BigClassName2" size="30"></td>
<td height="20" colspan="4" bgcolor="#FFFFFF"><input type="submit" name="Submit" value="确 认" > </td>
update的
<input name="pagename" type="text" id="name" value="<%=rs.getString("name")%>" size="15">
<input name="pageurl" type="text" id="url" value="<%=rs.getString("pageurl")%>" size="15">
<a href="ma_pages.jsp?aid=<%=hid%>">更 新</a> <a href='ma_pages.jsp'>取 消</a>
这个问题如果实在看不出来的话就算了吧,这个真的很有可能是我的电脑的事情,我换个电脑再试试吧。前几天就想这么做了,但是同学的电脑也不幸悲剧了(不过是别的问题)。最后还想说一句对于jsp,dreamweaver真是弱爆了,楼上的朋友,再次感谢你!