public int executeUpdate(String sql)
{
int rowCount=0;
rs=null;
try
{
conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rowCount=0;
rowCount=stmt.executeUpdate(sql);
}
catch(Exception ex)
{
System.err.println("db,excuteUpdate:"+ex.getMessage());
System.out.print("false:");//输出到客户端
return 0;
}
return 1;
}
以上是我定义个一个javabean中的一段代码,
我在jsp文件中调用这个函数来实现sql数据库中记录的插入。
问题是:
我每次都已经成功的把记录插入到数据库的表中了,
但是这个函数的返回值经常是0,很少返回1;
这是怎么回事啊,记录已经插入数据库那不是表示没有出现异常嘛,应该return 1啊,怎么还会去执行catch里面的程序,而且,也不是每次插入成功都执行catch里的代码的。
{
int rowCount=0;
rs=null;
try
{
conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rowCount=0;
rowCount=stmt.executeUpdate(sql);
}
catch(Exception ex)
{
System.err.println("db,excuteUpdate:"+ex.getMessage());
System.out.print("false:");//输出到客户端
return 0;
}
return 1;
}
以上是我定义个一个javabean中的一段代码,
我在jsp文件中调用这个函数来实现sql数据库中记录的插入。
问题是:
我每次都已经成功的把记录插入到数据库的表中了,
但是这个函数的返回值经常是0,很少返回1;
这是怎么回事啊,记录已经插入数据库那不是表示没有出现异常嘛,应该return 1啊,怎么还会去执行catch里面的程序,而且,也不是每次插入成功都执行catch里的代码的。
解决方案 »
- flex 处理图文混排
- 如何判断请求来自何处?
- 连接池问题?
- struts2中拦截器遇到action标签之后发生的问题
- MyEclipse中项目目录结构的问题.请前辈指教!
- 判断一个数据库时间记录是否超过当前时间,超过则用jmail发邮件.
- 在线等:在知道坐标和半径的情况下,怎么能在地图上画圆?
- 请问如何从ORACLE数据库中取出jpg图像并显示出来?
- 关于数据库操作的一个问题? 50分相送
- 在struts里,我在serlvet中,给变量赋这个字符串: 目的是让它在jsp页面里显示一个空格,可是struts自动把它转换成了  请问
- js文档嵌入到jsp页不起作用,请求帮忙!
- 请问哪位前辈能给我全国的IP地址分配表?
不过如果执行catch里的语句,那么就一定是抛异常了.你再好好找找.
如果想问问题的话,最好能多贴点信息出来.要学学问问题的艺术
前面加一句ex.printStackTrace();看看是不是有异常,你把异常打到err上去了,不一定看得到的
student.jsp是输入要插入的记录的页面,输入信息完毕后,在该页面上点击新增按钮,提交到smid.jsp中进行插入记录到数据库的处理,使用javabean执行sql语句,在smid.jsp中定义String insert来标记是否插入成功。插入完毕后,重定向回student.jsp,并且将insert的值也传到student.jsp一下是smid.jsp
<jsp:useBean id="sdb" class="jbean.Sdb1" scope="request"/>
<jsp:setProperty name="sdb" property="*"/>
<body><%
String insert="true";
String sno=sdb.toChinese(request.getParameter("sno"));
String sname=sdb.toChinese(request.getParameter("sname"));
String dept=sdb.toChinese(request.getParameter("dept"));
String starttime=sdb.toChinese(request.getParameter("starttime"));
String sql="";
ResultSet check=null;if(request.getParameter("tvalue")!=null)
{
if(request.getParameter("tvalue").equals("x"))//增加
{ if(sno!=null)
{ if(!sno.equals(""))
{
String str="select * from Students where Sno='"+sno+"'";
check=sdb.executeQuery(str); if(check.next())
{ insert="yicunzai"; }
else
{
sql="insert into Students(Sno,Sname,DeptNo,StartDate,CreditHours) values('"+sno+"','"+sname+"','"+dept+"','"+starttime+"',0)";
insert=String.valueOf(sdb.executeUpdate(sql));
} }
else
{
insert="youkongzhi";
}
}
response.sendRedirect("student.jsp?xvalue="+insert);
}
else
{ if(request.getParameter("tvalue").equals("y"))
{
String cbox=request.getParameter("cbox");
if(cbox!=null)//复选框选中了
{
String va[]=request.getParameterValues("cbox");
int len=java.lang.reflect.Array.getLength(va);
if(len>=1)
{
String sql2=""; for(int i=0;i<len;i++)
{//先删除成绩表中的相应记录
sql2="delete from Reports where Sno='"+va[i]+"'";
int bupdate2=sdb.executeUpdate(sql2);
sql="delete from Students where Sno='"+va[i]+"'";
int bupdate=sdb.executeUpdate(sql);
}
}
}
response.sendRedirect("student.jsp");
}
}
//response.setHeader("Refresh","0.0001");
}
else
{response.sendRedirect("student.jsp");
}%></body>
可是编译有两个错误
E:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\ROOT\dbshow\Sdb1.java:77: unreported exception java.sql.SQLException; must be caught or declared to be thrown
stmt.close();
E:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\ROOT\dbshow\Sdb1.java:78: unreported exception java.sql.SQLException; must be caught or declared to be thrown
conn.close();
这句打出的信息是什么呢?
修改成以下方式
catch(Exception ex)
{
System.err.println("db,excuteUpdate:"+ex.getMessage());
System.out.print("false:");//输出到客户端
return rowCount;
}return rowCount;
}
public int executeUpdate(String sql)
{
int rowCount=0;
rs=null;try
{
conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
rowCount=0;
rowCount=stmt.executeUpdate(sql);
}
catch(Exception ex)
{
System.err.println("db,excuteUpdate:"+ex.getMessage());
System.out.print("false:");//输出到客户端
}return rowCount;
}
建议在开发期间。将getMessage();换成ex.printStackTrace();
...................................
Sdb1,excuteUpdate:[Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]违反了 PRIMARY KEY 约束 'PK__Students__7A9C383C'。不能在对象 'Students' 中插入重复键。java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]违反了 PRIMARY KEY 约束 'PK__Students__7A9C383C'。不能在对象 'Students' 中插入重复键。
但是怎么会这样呢,插入成功了啊,他怎么判断出是有重复键的