首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

百分求助,SQL语句异常,多谢先

2011-12-11 
百分求助,SQL语句错误,谢谢先错误类型java.lang.NullPointerException空指针不抛出异常好像到这就错rs d

百分求助,SQL语句错误,谢谢先

错误类型

java.lang.NullPointerException 空指针

不抛出异常好像到这就错 rs = db.executeQuery(PPsql);while(rs.next())

jsp源码:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %> 
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<html> 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<jsp:useBean id="db" scope="page" class="cn.com.util.DataBase"></jsp:useBean>
<title>添加新商品</title>
</head> 
<body bgcolor="#FFFFFF">
<table width="600" border="0" cellspacing="1" cellpadding="1" align="center"> 
<tr align="center" bgcolor="#CCCCCC"> 
<td><b>標題</b></td> 
<td><b>作者</b></td> 
<td><b>類型</b></td> 
</tr> 
<% 
String Id="";
String managerName="";
String emailAddress="";
int i; 
int ipage=2; //分頁單位 
int allpage; //總頁數 
int pages; //接受的頁碼變數 
int cpage=1; //當前頁 
int spage; //開始頁 
int allCol=0;
Vector v=null;
String PPsql,pagesql;
ResultSet rs,pagers;
 //pagesql = "SELECT COUNT(*) FROM Authors"; 
 pagesql = "SELECT COUNT(*) FROM managers"; 
//取總文章數 
//statement = conn.createStatement();
//pagers = statement.executeQuery(pagesql); 
pagers=db.executeQuery(pagesql);
while(pagers.next())
  {
  allCol = pagers.getInt(1);
  //System.out.println(allCol); 

 }
//獲得總頁面數 
allpage = (int)Math.ceil((allCol + ipage-1) / ipage); 
//判斷參數pages是否空 
if (request.getParameter("pages")==null)
 { 
pages=1; 
}
else

pages = new Integer(request.getParameter("pages")).intValue(); 
System.out.println(pages);

//判斷當前頁 
if(pages > allpage || pages == 0)
{
cpage = 1;
}
else

cpage = pages; 

//判斷起始頁 
//sql = "select Top "+ipage+" au_id,au_lname,au_fname,address,phone from authors where au_id not in (select top "+(cpage-1)*ipage+" au_id from authors order by au_id desc)order by au_id desc"; 
PPsql = "SELECT TOP "+ipage+" Id,ManagerName,EmailAddress FROM managers WHERE Id NOT IN (SELECT TOP ";
PPsql+=(cpage-1)*ipage+" Id FROM managers ORDER BY Id DESC)ORDER BY Id DESC"; 
try
{
rs = db.executeQuery(PPsql);
while(rs.next())
{
Id=rs.getString("Id");
managerName=rs.getString("ManagerName");
emailAddress=rs.getString("EmailAddress");
%> 
<tr>
 <td><%= Id %></td> 
 <td><%= managerName %></td>
 <td><%= emailAddress %></td> 
</tr> 
<%  
}
}
catch(Exception ex)
{
out.print(ex.toString());
}
%>
<tr bgcolor="#CCCCCC"> 
<td colspan="3" align="right" valign="middle">共 <%= allCol %>條記錄 共 <%= allpage %>頁 <% if (cpage>1) { %><a href="manager.jsp?pages=<%= cpage-1 %>"></a><% } if (cpage<allpage) { %><a href="manager.jsp?pages=<%= cpage+1 %>"></a><% } %> / <% for (i=1;i<=allpage;i++) { if (i != pages) {%><a href="manager.jsp?pages=<%= i %>"><%= i %></a>&nbsp;<% }} %></td> 


</tr> 
</table> 
</body> 
</html>

 
java源码

/*返回ResultSet*/
public ResultSet executeQuery(String m_SQL) 
{
ResultSet rs=null;
try 
{
Connection conn =getConnection();
PreparedStatement ps =conn.prepareStatement(m_SQL);
rs = ps.executeQuery();
}
catch (Exception ex)
{
System.err.println("sql_data.executeQuery:" + ex.getMessage());
}
return rs;
}



[解决办法]
pagers=db.executeQuery(pagesql); //db是不是没取到?

[解决办法]

应该是取到了,因为在前面用了
[解决办法]

是不是我的SQL错了呀,帮我看看
[解决办法]
如果是SQL错了,就把语句放到查询分析器里试试,执行看看就知道了

[解决办法]
应该是你SQL语句错了,不可能是那句话错了,
这种情况我也遇到过
[解决办法]

我用的是myslq
[解决办法]
+=(cpage-1)*ipage+" Id FROM managers ORDER BY Id DESC)ORDER BY Id DESC"//DESC)ORDER 之间加个空格
应该是sql异常,然后你就直接返回了个null的ResultSet,这样rs.next就出现java.lang.NullPointerException了
把System.err.println("sql_data.executeQuery:" + ex.getMessage()); 这里打印出来的信息贴出来,最好把sql文也打印出来System.out.println(m_SQL);然后在MySql端测试一下sql文。

[解决办法]
PPsql = "SELECT TOP "+ipage+" Id,ManagerName,EmailAddress FROM managers WHERE Id NOT IN (SELECT TOP ";
PPsql+=(cpage-1)*ipage+" Id FROM managers ORDER BY Id DESC)ORDER BY Id DESC";
你这名的sql有问题,例如ipage=20,cpage=2
看看你的结果:
SELECT TOP 20 Id,ManagerName,EmailAddress FROM managers WHERE Id NOT IN (SELECT TOP 20 Id FROM managers ORDER BY Id DESC)ORDER BY Id DESC
结果记录肯定是不对的。
mysql分页比较简单呀
select * from table limit 0,20
如果要第二页的内容:
select * from table limit 20,20
比sqlserver简单多了

[解决办法]
自己测试下了,把sql执行语句提取出来直接在数据库查询工具下看看能否正常运行不就行了。

热点排行