关于JAVA分页代码和删除数据值的问题 高手请进~~~
本人做了正在做一个系统,但在分页和删除上遇到点问题希望高手不吝赐教~问题1:分页本人做的分页是每页显示5条信息,但是每次进入页面时从数据库读取信息到JSP页面之后,页面并...
本人做了正在做一个系统,但在分页和删除上遇到点问题希望高手不吝赐教~
问题1:分页
本人做的分页是每页显示5条信息,但是每次进入页面时从数据库读取信息到
JSP页面之后,页面并不是以每页显示5条信息的,而是数据库里所有的信息都
显示在一个页面里面,而且不会显示有几行,有几页,第几页~~
比如说我数据库里面有8条信息,原定是每页显示5条信息,然而实际8条信息
全部都显示在同一个页面里。
更郁闷的是,我的系统项目代码并不报错,而且能正确运行。
最让我不解的是,每次进入分页页面之后,要手动点击某个按钮(页面内的任
意按钮)我的分页才能正确的显示出来~~以每5条信息显示1页,有多少页,多
少行都可以显示出来,但是必须要点击页面按钮才行,刷新他也不会正确显
示。我的本意是进入页面之后自动分页,并且显示有多少行,多少页等,但每
次都需要手动才能显示求助高手,请问这样的漏洞是那里出错了的,或者是我
那里没写对~~
问题2:
删除,不能正确的删除数据库里面的信息。
比如有说,我有5条数据库信息,我只想删除其中的一条或者几条而已,但是
每次我点击删除的时候,数据库里面的所有信息都会被删除。
请教,比如我只想删除页面(既数据库内信息)中的一条或者几条信息,代码
是怎么写的~~~
以上两个问题,求助高手,本人时间紧迫,最好是写代码~谢谢 展开
问题1:分页
本人做的分页是每页显示5条信息,但是每次进入页面时从数据库读取信息到
JSP页面之后,页面并不是以每页显示5条信息的,而是数据库里所有的信息都
显示在一个页面里面,而且不会显示有几行,有几页,第几页~~
比如说我数据库里面有8条信息,原定是每页显示5条信息,然而实际8条信息
全部都显示在同一个页面里。
更郁闷的是,我的系统项目代码并不报错,而且能正确运行。
最让我不解的是,每次进入分页页面之后,要手动点击某个按钮(页面内的任
意按钮)我的分页才能正确的显示出来~~以每5条信息显示1页,有多少页,多
少行都可以显示出来,但是必须要点击页面按钮才行,刷新他也不会正确显
示。我的本意是进入页面之后自动分页,并且显示有多少行,多少页等,但每
次都需要手动才能显示求助高手,请问这样的漏洞是那里出错了的,或者是我
那里没写对~~
问题2:
删除,不能正确的删除数据库里面的信息。
比如有说,我有5条数据库信息,我只想删除其中的一条或者几条而已,但是
每次我点击删除的时候,数据库里面的所有信息都会被删除。
请教,比如我只想删除页面(既数据库内信息)中的一条或者几条信息,代码
是怎么写的~~~
以上两个问题,求助高手,本人时间紧迫,最好是写代码~谢谢 展开
5个回答
展开全部
听你这么说,必定是你的sql语句写的有问题,你既然没有贴出代码,我也没办法给你找错,下面针对你的问题的代码, (假设数据库中有张news新闻表)不知道你用的是什么数据库,这里针对的是mysql数据库:
//先针对数据库的news表写一个java bean
import java.io.Serializable;
import java.sql.Date;
public class news implements Serializable
{
private int news_id;
private String news_title;
private String news_content;
private int news_type_id;
private String pubtime;
public news(int news_id, String news_title, String news_content, int news_type_id, String pubtime) {
super();
this.news_id = news_id;
this.news_title = news_title;
this.news_content = news_content;
this.news_type_id = news_type_id;
this.pubtime = pubtime;
}
public news(){}
public String getNews_content() {
return news_content;
}
public void setNews_content(String news_content) {
this.news_content = news_content;
}
public int getNews_id() {
return news_id;
}
public void setNews_id(int news_id) {
this.news_id = news_id;
}
public String getNews_title() {
return news_title;
}
public void setNews_title(String news_title) {
this.news_title = news_title;
}
public int getNews_type_id() {
return news_type_id;
}
public void setNews_type_id(int news_type_id) {
this.news_type_id = news_type_id;
}
public String getPubtime() {
return pubtime;
}
public void setPubtime(String pubtime) {
this.pubtime = pubtime;
}
}
//再写一个操作数据库的dbo
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
public class newsDBO {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
public ArrayList getNews(int page_num, int page_count )//分页代码
{
news s=null;
ArrayList list = new ArrayList();
try{
//加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//获得数据库连接。注:test是数据库名,news表在这个数据库中
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
String sql="select * from news limit " +( page_num-1)*page_count +"," + page_count ;
System.out.println(sql);//这是调试用的,可以检验你的sql语句有没有错,错在哪里
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next())
{
s=new news();
s.setNews_content(rs.getString("news_content"));
s.setNews_id(rs.getInt("news_id"));
s.setNews_title(rs.getString("news_title"));
s.setNews_type_id(rs.getInt("news_type_id"));
s.setPubtime(rs.getString("pubtime"));
list.add(s);
}
}
catch(Exception e)
{
e.printStackTrace();
}
return list;
}
public boolean delNewsById(int news_id){
boolean flag = true;
try{
conn = DBTools.getConnection();
String sql = "delete from news where news_id = " + news_id;
ps = conn.prepareStatement(sql);
System.out.println(sql);//调试代码
//千万别忘了执行!!!不写下面这一句,所有的代码都白写了,根本就没往数据库送!!
ps.execute();
catch (Exception e) {
flag = false;
e.printStackTrace();
}
return flag;
}
}
//下面是分页的jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<!-- 把包导入-->
<jsp:directive.page import="dbo.newsDBO" />
<jsp:directive.page import="Beans.news" />
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'news.jsp' starting page</title>
</head>
<body>
<table border="1">
<tr>
<td>新闻序号</td>
<td>新闻标题<</td>
<td>新闻内容</td>
<td>新闻类型</td>
<td>新闻时间</td>
<td>基本操作</td>
</tr>
<%
int page_num = 1;
int page_count = 5;
String num = request.getParameter("page_num");
if(num != null){
page_num = Integer.parseInt(num);
}
newsDBO nd = new newsDBO();
ArrayList al=nd.getNews(page_num,page_count);
news n=null;
for(int i=0; i < al.size(); i++){
n=(news)al.get(i);
%>
<tr>
<td><%=n.getNews_id()%></td>
<td><%=n.getNews_title()%></td>
<td><%=n.getNews_content()%></td>
<td><%=n.getNews_type_id()%></td>
<td><%=n.getPubtime()%></td>
<td><a href="delete_news.jsp?id=<%=n.getNews_id()%>">删除</a></td>
</tr>
</table>
</body>
</html>
//删除页面delete.jsp
<%@ page language="java" pageEncoding="gbk"%>
<jsp:directive.page import="dbo.newsDBO"/>
<body>
<%
String sid = request.getParameter("id");
System.out.println(sid);
int id = Integer.parseInt(sid);
newsDBO dbo = new newsDBO();
dbo.delNewsById(id);
%>
</body>
</html>
大概就是这样了,说明下,上面的代码是我从以前做的新闻网站中经修改而来的,但是以前因为做的是一个网站,所以全部代码比较复杂,但是也没必要给你,因为根你的问题没多大关系,为了代码简洁和便于你理解,jsp页面我专门给你写了,就是上面的,希望能解决你的问题,也就算我没白忙,呵呵
对了,如果你的数据库不是mysql,那你可以到网上找一下相应数据库的分页语句,比如oracle,sqlsever等,其实原理是一样的,不过sql语句稍有不同而已.所以我这里不再多说了
//先针对数据库的news表写一个java bean
import java.io.Serializable;
import java.sql.Date;
public class news implements Serializable
{
private int news_id;
private String news_title;
private String news_content;
private int news_type_id;
private String pubtime;
public news(int news_id, String news_title, String news_content, int news_type_id, String pubtime) {
super();
this.news_id = news_id;
this.news_title = news_title;
this.news_content = news_content;
this.news_type_id = news_type_id;
this.pubtime = pubtime;
}
public news(){}
public String getNews_content() {
return news_content;
}
public void setNews_content(String news_content) {
this.news_content = news_content;
}
public int getNews_id() {
return news_id;
}
public void setNews_id(int news_id) {
this.news_id = news_id;
}
public String getNews_title() {
return news_title;
}
public void setNews_title(String news_title) {
this.news_title = news_title;
}
public int getNews_type_id() {
return news_type_id;
}
public void setNews_type_id(int news_type_id) {
this.news_type_id = news_type_id;
}
public String getPubtime() {
return pubtime;
}
public void setPubtime(String pubtime) {
this.pubtime = pubtime;
}
}
//再写一个操作数据库的dbo
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
public class newsDBO {
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
public ArrayList getNews(int page_num, int page_count )//分页代码
{
news s=null;
ArrayList list = new ArrayList();
try{
//加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//获得数据库连接。注:test是数据库名,news表在这个数据库中
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
String sql="select * from news limit " +( page_num-1)*page_count +"," + page_count ;
System.out.println(sql);//这是调试用的,可以检验你的sql语句有没有错,错在哪里
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next())
{
s=new news();
s.setNews_content(rs.getString("news_content"));
s.setNews_id(rs.getInt("news_id"));
s.setNews_title(rs.getString("news_title"));
s.setNews_type_id(rs.getInt("news_type_id"));
s.setPubtime(rs.getString("pubtime"));
list.add(s);
}
}
catch(Exception e)
{
e.printStackTrace();
}
return list;
}
public boolean delNewsById(int news_id){
boolean flag = true;
try{
conn = DBTools.getConnection();
String sql = "delete from news where news_id = " + news_id;
ps = conn.prepareStatement(sql);
System.out.println(sql);//调试代码
//千万别忘了执行!!!不写下面这一句,所有的代码都白写了,根本就没往数据库送!!
ps.execute();
catch (Exception e) {
flag = false;
e.printStackTrace();
}
return flag;
}
}
//下面是分页的jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<!-- 把包导入-->
<jsp:directive.page import="dbo.newsDBO" />
<jsp:directive.page import="Beans.news" />
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'news.jsp' starting page</title>
</head>
<body>
<table border="1">
<tr>
<td>新闻序号</td>
<td>新闻标题<</td>
<td>新闻内容</td>
<td>新闻类型</td>
<td>新闻时间</td>
<td>基本操作</td>
</tr>
<%
int page_num = 1;
int page_count = 5;
String num = request.getParameter("page_num");
if(num != null){
page_num = Integer.parseInt(num);
}
newsDBO nd = new newsDBO();
ArrayList al=nd.getNews(page_num,page_count);
news n=null;
for(int i=0; i < al.size(); i++){
n=(news)al.get(i);
%>
<tr>
<td><%=n.getNews_id()%></td>
<td><%=n.getNews_title()%></td>
<td><%=n.getNews_content()%></td>
<td><%=n.getNews_type_id()%></td>
<td><%=n.getPubtime()%></td>
<td><a href="delete_news.jsp?id=<%=n.getNews_id()%>">删除</a></td>
</tr>
</table>
</body>
</html>
//删除页面delete.jsp
<%@ page language="java" pageEncoding="gbk"%>
<jsp:directive.page import="dbo.newsDBO"/>
<body>
<%
String sid = request.getParameter("id");
System.out.println(sid);
int id = Integer.parseInt(sid);
newsDBO dbo = new newsDBO();
dbo.delNewsById(id);
%>
</body>
</html>
大概就是这样了,说明下,上面的代码是我从以前做的新闻网站中经修改而来的,但是以前因为做的是一个网站,所以全部代码比较复杂,但是也没必要给你,因为根你的问题没多大关系,为了代码简洁和便于你理解,jsp页面我专门给你写了,就是上面的,希望能解决你的问题,也就算我没白忙,呵呵
对了,如果你的数据库不是mysql,那你可以到网上找一下相应数据库的分页语句,比如oracle,sqlsever等,其实原理是一样的,不过sql语句稍有不同而已.所以我这里不再多说了
展开全部
关于问题1 一般分页有2种实现方法,一种是在数据库里实现分页;另一种是在程序里实现分页。
不过看似你的后台已经写好了 只是不能在进入页面的时候展现出分页效果是不? 你是用struts做的吗?
如果是 你再action跳转前 就要把分页后的当前页面的信息(一般是一个数据集 如ArrayList)放入jsp作用域里 如request 再跳转到展示的jsp 再在jsp里用struts的迭代标签(如logic:iterate )做展示
一般为了方便可以自己做一个分页标签,这样添加起来也方便
如果是直接用servlet实现的话 也是同样的道理。
关于问题2
你是用jdbc实现的吧 那样的话 我估计是你的sql语句没写好,也可能是没有正确从页面获得选中数据的标识 这个是程序的原因 你debug下就能找出问题来
能想到的就这么多 希望能对你有帮助
不过看似你的后台已经写好了 只是不能在进入页面的时候展现出分页效果是不? 你是用struts做的吗?
如果是 你再action跳转前 就要把分页后的当前页面的信息(一般是一个数据集 如ArrayList)放入jsp作用域里 如request 再跳转到展示的jsp 再在jsp里用struts的迭代标签(如logic:iterate )做展示
一般为了方便可以自己做一个分页标签,这样添加起来也方便
如果是直接用servlet实现的话 也是同样的道理。
关于问题2
你是用jdbc实现的吧 那样的话 我估计是你的sql语句没写好,也可能是没有正确从页面获得选中数据的标识 这个是程序的原因 你debug下就能找出问题来
能想到的就这么多 希望能对你有帮助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
删除没有按ID删除吧?SQL加个条件,id=?从页面传过来的值。。
分页呢,这个说不好,觉得可能页面上有些问题。
分页呢,这个说不好,觉得可能页面上有些问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SQL语句写的有问题,可以在查询分析器中试试结果。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的SQL语句肯定有问题了!查查看!~或者是你在写jsp代码的时候是把数据库中的数据全部读出来的!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询