使用executeUpdate插入成功一条记录,返回值是0?
(1)以下是我写的一个javabean:Sdb.java
里的一个方法,jsp页面通过调用这个方法执行数据库记录的修改
public int executeUpdate(String sql)
{
int rowCount=0;
rs=null;
try
{
conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement();
rowCount=stmt.executeUpdate(sql);
System.out.println(String.valueOf(rowCount));
}
catch(
SQLException ex)
{
ex.printStackTrace();
System.err.println( "Sdb,excuteUpdate: "+ex.getMessage());
System.out.print( "Sdb,excuteUpdate: "+ex.toString());//输出到客户端
return 0;
}
return 1;
}
(2)下面是我用来修改学生成绩的一个简单的jsp页
<jsp:useBean id= "sdb " class= "jbean.Sdb " scope= "request "/>
<jsp:setProperty name= "sdb " property= "* "/>
<body>
<form name= "form1 " method= "post " action= " ">
<p> 学号: <input type= "text " name= "sno "> </p>
<p> 课程号: <input type= "text " name= "cno "> </p>
<p> 成绩: <input type= "text " name= "grade "> </p>
<input type= "submit " name= "Submit " value= "修改 ">
<%
String sql= " ";
String sno=sdb.toChinese(request.getParameter( "sno "));
String cno=sdb.toChinese(request.getParameter( "cno "));
String grade=sdb.toChinese(request.getParameter( "grade "));
if(sno!=null&&cno!=null&&grade!=null)
{ if(!sno.equals( " ")&&!cno.equals( " ")&&!grade.equals( " "))
{
sql= "update Reports set grade= ' "+grade+ " ' where Sno= ' "+sno+ " ' and Cno= ' "+cno+ " ' ";
int update=sdb.executeUpdate(sql);
if(update==0)
out.print( " <script> alert( '修改失败! '); </script> ");
}
}
%>
</form>
</body>
我现在遇到的问题是,当我成功插入一条记录时Sdb.java的executUpdate中的System.out.println(String.valueOf(rowCount));显示的却是0,但都有些表的记录的修改时又是1。
而且我在查询分析器里直接输入修改语句显示的也都是“所影响的行数为1行”
这是为什么啊
------解决方案--------------------肯定是条件不满足,你把显示为0的时候的sql在页面打印出来,然后放到查询分析器里执行看看.
这里只看到更新的操作,没看到插入的操作.
------解决方案--------------------sdb.toChinese
这个是转换什么的?你把学号,课程号给转了,怎么能找到这样的记录呢,那修改不就是0了吗?
------解决方案--------------------把代码给改成这样: