NullPointerException就是有些变量的值为空。
解决方案 »
- 新手jsp代码疑问 大家来找茬 请高手指教
- extjs TreePanel怎么样才能建立一个click函数中的e类型的对象呢?
- 对于javaScript
- 如何在JSP中把数据库内容导入表格中
- 关于自定义标签的问题
- smartupload文件改怎么配置!!!!
- 请问怎样将JAVA 中byte类型截取出一部分?
- 赠分60!!!我想请教一个关于在javascript中创建一个hidden对象的问题。
- weblogic里面不能用request.getParameter();吗?我晕了,救命!
- 以下代码出什么结果,请高手“预测”一下?
- 在beans中,如何在构造函数中读/写session的内容?
- 帮帮我啊
代码都贴上来了???
下面就是我用res.getString的代码
<td width="11%" height="14">
<div align="center"><%=res.getString("OPERATOR")%></div>
</td>
<td width="10%" height="14">
<div align="center"><%=res.getString("OPERATION")%></div>
</td>
<td width="11%" height="14">
<div align="center"><%=res.getString("LOGTIME")%></div>
</td>
你应该先取出来,再多次使用,String oper=res.getString("OPERATOR")
数据库中没插入空值to:freefalcon(心宇)
我没有对同一个数据库字段取两次
(名称写错)
换成数字试试:
String oper=res.getString(1);
或者字段类型不符(不是字符型)
有啊,换成数字也没用
你用游标的时候是不是先next了一下?
用getString取不出值来是不会抛空指针的。
res=condb.executeQuery(sql);
while(res.next()){
String txt1 = res.getString("OPERATOR");
String txt2 = res.getString("OPERATION");
String txt3 = res.getString("LOGTIME");
}
SQL语句有错吗?
是啊,还没解决,请你帮忙啊
我的代码都在上面,我什么时候NEXT了?
那就是没有满足条件的记录
加:
while(res.next())
{}
把你的程序改成:
<%
while(res.next()){
%>
<td width="11%" height="14">
<div align="center"><%=res.getString("OPERATOR")%></div>
</td>
<td width="10%" height="14">
<div align="center"><%=res.getString("OPERATION")%></div>
</td>
<td width="11%" height="14">
<div align="center"><%=res.getString("LOGTIME")%></div>
</td>
<%
}
%>
这个错误很常见
你搜索一下论坛就可以发现很多这方面的问题和答案的
sql="select count(*) as count1 from t_syslog";
用select count 肯定有结果集,可以不判断。养成习惯,最好是先判断,后取。
res=condb.executeQuery(sql);
if(res.next()){
total_page=res.getInt(1);
}
我已经把我用结果集的地方都改了,还是一样抛空指针
在你的代码里,只用到了句柄操作,而且地方也不多,
你的连接是怎么取的?statment是怎么来的?
你取res2的时候已经把res1关掉了。
Therefore, if the reading of one ResultSet object is interleaved with the reading of another, each must have been generated by different Statement objects.
用两个Statement来取两个结果集。
<%@page contentType="text/html;charset=gb2312"%>
<%@page import="java.sql.*"%>
<%@page import="java.lang.*"%>
<html>
<head>
<title>维捷宽带计费系统 WJ-ECFS</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link rel="stylesheet" href="/ecfs.css" type="text/css">
</head><body bgcolor="#FFFFFF" text="#000000" background="/images/bg.jpg" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<div align="center">
<p><font color="#3399CC" face="黑体">系统日志列表</font></p>
<table width="584" border="1" cellspacing="0" cellpadding="0" bgcolor="#c8e8ff" bordercolor="#FFFFFF">
<jsp:useBean id="condb" class="bean.dbbean"/>
<jsp:useBean id="chn" class="bean.chn"/>
<%
String txt1="",txt2="",txt3="";
int pages=0;
int pagesize=10;
ResultSet res;
String pages_str=request.getParameter("pages");
if(pages_str==null)
{
pages_str="0";
}
pages=new Integer(pages_str).intValue();
String bottom,top,sql="";
int total_page=0,pages_count=0,mode=0;
bottom=String.valueOf(pages*pagesize+1);
top=String.valueOf(pages*pagesize+pagesize);
if(pages==-1)
{
sql="select count(*) as count1 from t_syslog";
res=condb.executeQuery(sql);
if(res.next()){
total_page=res.getInt(1);
}
pages_count=(int)total_page/pagesize;
mode=total_page%10;
int id_temp=pages_count*pagesize+1;
sql="select * from t_syslog where id>="+id_temp;
}
else
{
sql="select * from t_syslog where id>="+bottom+" and id<="+top;
}
res=condb.executeQuery(sql);
String space=" ";
String N_url="<a href=/jsp/system/syslog.jsp?pages="+(pages+1)+">";
String P_url="<a href=/jsp/system/syslog.jsp?pages="+(pages-1)+">";
String url1="</a>",last="<a href=/jsp/system/syslog.jsp?pages=-1>";
String first="<a href=/jsp/system/syslog.jsp?pages=0>";
if(pages==0){
out.print(N_url+chn.strtochn("下一页")+url1+space);
out.print(last+chn.strtochn("最后一页")+url1);
}
if(pages==-1){
out.print(first+chn.strtochn("第一页")+url1+space);
int pages_count_temp=pages_count-1;
P_url="<a href=/jsp/system/syslog.jsp?pages="+pages_count_temp+">";
out.print(P_url+chn.strtochn("上一页")+url1);
}
if(pages>0){
out.print(first+chn.strtochn("第一页")+url1+space);
out.print(P_url+chn.strtochn("上一页")+url1+space);
out.print(N_url+chn.strtochn("下一页")+url1+space);
out.print(last+chn.strtochn("最后一页")+url1);
}
%>
<tr>
<td width="11%" align=center bgcolor="#3399CC"><font color="#FFFFFF">操作者</font></td>
<td width="10%" align=center bgcolor="#3399CC"><font color="#FFFFFF">操作内容</font></td>
<td width="11%" align=center bgcolor="#3399CC"><font color="#FFFFFF">操作时间</font></td>
</tr>
<% while(res.next()){
txt1 = res.getString("OPERATOR");
txt2 = res.getString("OPERATION");
txt3 = res.getString("LOGTIME");
}
%>
<tr>
<td width="11%" height="14">
<div align="center"><%=txt1%></div>
</td>
<td width="10%" height="14">
<div align="center"><%=txt2%></div>
</td>
<td width="11%" height="14">
<div align="center"><%=txt3%></div>
</td>
</tr>
</table>
<p> </p>
</div>
</body>
</html>
一点建议,为什么你取连接可以用javabean来实现,具体的查询还要在页面上做呢?直接在jsp里操作数据库是比较忌讳的。
这个sql语句对吗?
我已经简化到最小了 还是抛空指针错误
<jsp:useBean id="condb" class="bean.dbbean"/>
<%
String txt1="",txt2="",txt3="";
ResultSet res;
String sql="";
sql="select * from t_syslog where id>=1 and id<=10";
res=condb.executeQuery(sql);
while(res.next()){
txt1 = res.getString("OPERATOR");
txt2 = res.getString("OPERATION");
txt3 = res.getString("LOGTIME");
}
%>
<%
String txt1="",txt2="",txt3="";
ResultSet res;
String sql="";
sql="select * from t_syslog where id>=1 and id<=10";
out.print(condb);
%>
看看是什么。
@后面的每点一次变一次
这是什么?
<%
String txt1="",txt2="",txt3="";
ResultSet res;
String sql="";
sql="select * from t_syslog where id>=1 and id<=10";
out.print(condb.executeQuery("sql"));
%>
结果输出NULL,为什么会这样?
package bean;/**
* Title:
* Description:
* Copyright: Copyright (c) 2000
* Company:
* @author
* @version 1.0
*/
import java.sql.*;
import java.lang.*;public class dbbean {
String sDBDriver = "org.gjt.mm.mysql.Driver";
String sConnStr = "jdbc:mysql://localhost:3306/AAA?user=root;password=";
Connection Conn;
Statement Stmt;
ResultSet rs;
boolean isright=false;
public dbbean() {
} public Connection connectdb(){
try{
Class.forName(sDBDriver);
Conn = DriverManager.getConnection(sConnStr);
}
catch(java.lang.ClassNotFoundException e) {
System.err.println("Database Error: " + e.getMessage());
}
catch(SQLException e){}
return Conn;
}
public ResultSet executeQuery(String sql) {
rs = null;
try {
Conn = DriverManager.getConnection(sConnStr);
Stmt=Conn.createStatement();
rs = Stmt.executeQuery(sql);
}
catch(SQLException ex) {
System.err.println("executeQuery Error: " + ex.getMessage());
}
return rs;
}
public boolean executeUpdate(String sql) {
try {
Conn = DriverManager.getConnection(sConnStr);
Stmt=Conn.createStatement();
Stmt.executeUpdate(sql);
isright=true;
}
catch(SQLException ex) {
System.err.println("executeUpdate Error: " + ex.getMessage());
isright=false;
}
return isright;
}
}
Where id》=页的开头记录数 and id《=页的结束记录数
天!~~ 这样的人来做计费系统 。都不知道isp找的什么人啊????老大,拜托,问问同事,或者买本书。
真的无法想象。
网上找点代码就开用。也不分析别人结构是否完整,安全性如何,有没有内存泄漏。
conn也不关闭,不知道在做什么!!!!!!!!!!!!
郁闷的贴子
:(
试一这个 <jsp:useBean id="condb" class="bean.dbbean"/>
<%
String txt1,txt2,txt3;
ResultSet res;
String sql=;
txt1=null;
txt2=null;
txt3=null;
sql=null;
sql="select 字段1,字段2.... from t_syslog where rownum <= 10";
res=condb.executeQuery(sql);
while(res.next()){
txt1 = res.getString(1);
txt2 = res.getString(2);
txt3 = res.getString(3);
//输出取到的字段,看一下有没有空值;
out.print("|"+txt1+"|<br>");
out.print("|"+txt2+"|<br>");
out.print("|"+txt3+"|<br>");
}
%>最后,在SQLPLUS里试一试你的SQL:select * from t_syslog where id>=1 and id<=10,看一下能不能运行.