问题描述
我的程序用jdbc:odbc桥连接的access数据库连接部分使用JavaBean实现的在执行下面这些代码时Stringsql="selecttop1*fromsystem";ResultSetrs=mdb.executeQuery(sql);if(rs.next())显示rs.next()出现了NullPointerException错误,但我用查询分析器运行了selecttop1*fromsystem,可以出现查询结果.mdb为javabean的id.碰见这种结果可能是什么原因?如何修改?谢谢!
解决方案
解决方案二:
详细一些,这样看不懂,把源代码和错误提示给贴出来
解决方案三:
if改成while
解决方案四:
<%@pagecontentType="text/html;charset=GBK"%><%@pagelanguage="java"import="java.sql.*"errorPage=""%><head><linkhref="css.css"rel="stylesheet"type="text/css"><%!booleanIsMail(Stringuser_mail){intindex=user_mail.indexOf("@");intindex2=user_mail.indexOf(".");if(index==-1||index2==-1)returnfalse;elsereturntrue;}publicStringgetStr(Stringstr){try{Stringtemp_p=str;byte[]temp_t=temp_p.getBytes("ISO8859-1");Stringtemp=newString(temp_t);returntemp;}catch(Exceptione){e.printStackTrace();}return"null";}%><%!intCint(Stringcint){try{intn;n=Integer.parseInt(cint);returnn;}catch(NumberFormatExceptione){return0;}}%><jsp:useBeanid="mdb"class="ckstudio.db.faq"scope="page"/><script>functionopenbag(id){window.open("basket.jsp?hw_id="+id,"","height=420,width=460,left=190,top=10,resizable=yes,scrollbars=yes,status=no,toolbar=no,menubar=no,location=no");}</script><scriptlanguage="javascript">functionopenScript(url,width,height){varWin=window.open(url,"openScript",'width='+width+',height='+height+',resizable=1,scrollbars=yes,menubar=no,status=yes');}</script><title><%//得到标题栏信息Stringsql="selecttop1*fromsystem";ResultSetrs=mdb.executeQuery(sql);if(rs.next()){%><%=rs.getString("web")%>-<%=rs.getString("sitename")%><%}else{out.print("ckstudio");}%></title></head><bodyonload="if(event.shiftKey){location.href='a/'}"topmargin="0"leftmargin="0"><divalign="center"><center><tableborder="0"cellpadding="0"cellspacing="0"style="border-collapse:collapse"bordercolor="#111111"width="100%"id="AutoNumber1"height="40"><tr><tdalign="center"><ahref="index.jsp">首页</a>|<atarget="_self"href="admin">管理进入</a>|<ahref="allnews.jsp">新闻中心</a>|<ahref="javascript:openScript('buy.jsp',460,300)">购物车</a>|<ahref="javascript:openScript('cash.jsp',460,300)">收银台</a><!--dimrs,sqlsetrs=server.createobject("adodb.recordset")sql="select*fromsort"rs.opensql,conn,3,3ifrs.eofthenresponse.write""endifdowhilenotrs.eof%><!--rs.movenextlooprs.close--><%if((String)session.getValue("user_name")!=null){%>|<ahref=javascript:openScript('modify.jsp',500,340)>更改资料</a>|<ahref="quit.jsp">退出</a> <%}else{%>|更改资料|退出 <%}%><!--显示时间--><scriptlanguage="JavaScript"><!--todayDate=newDate();date=todayDate.getDate();month=todayDate.getMonth()+1;year=todayDate.getYear();document.write("今天是")if(navigator.appName=="Netscape"){document.write("<fontcolor=#ff0000>");document.write(1900+year);document.write("</font");document.write("年");document.write("<fontcolor=#ff0000>");document.write(month);document.write("</font");document.write("月");document.write("<fontcolor=#ff0000>");document.write(date);document.write("</font");document.write("日");}if(navigator.appVersion.indexOf("MSIE")!=-1){document.write("<fontcolor=#ff0000>");document.write(year);document.write("</font>");document.write("年");document.write("<fontcolor=#ff0000>");document.write(month);document.write("</font>");document.write("月");document.write("<fontcolor=#ff0000>");document.write(date);document.write("</font>");document.write("日");}//--></script></td></tr></table></center></div>错误:java.lang.NullPointerExceptionorg.apache.jsp.shop.index_jsp._jspService(index_jsp.java:131)org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)javax.servlet.http.HttpServlet.service(HttpServlet.java:802)org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
解决方案五:
按2楼回答修改,结果还是那样
解决方案六:
ResultSetrs=mdb.executeQuery(sql);if(rs.next())这两句之间,你把rs打印一下,估计是null
解决方案七:
好像是bug。你把top1去掉,看看有没有结果。
解决方案八:
你单独调试一下你的javabean,应该返回是null
解决方案九:
按6楼所说做的也不行。回7楼,我没JavaBean的源代码。只有部分代码,你帮忙看看:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");定义驱动类型StringstrDirPath=application.getRealPath(request.getRequestURI());strDirPath=strDirPath.substring(0,strDirPath.lastIndexOf('\'))+"\";得到数据库的存放路径Stringurl="jdbc:odbc:driver={MicrosoftAccessDriver(*.mdb)};DBQ="+strDirPath+"db.mdb";定义连接地址Connectionconn=DriverManager.getConnection(url);连接数据库Statementstmt=conn.createStatement();ResultSetrs=stmt.executeQuery(sql);返回操作结果是JavaBean的原因的可能性有多大?
解决方案十:
引用8楼zuokangxiang的回复:
按6楼所说做的也不行。回7楼,我没JavaBean的源代码。只有部分代码,你帮忙看看:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");定义驱动类型StringstrDirPath=application.getRealPath(request.getRequestURI());strDirPath=strDirPath.s……
你在控制面版的数据源(ODBC)里面配置一下到你的这个mdb文件,然后用下面的测试下看看?sql改下:packagetest.oracle;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.ArrayList;publicclassTestResultRow{privatestaticfinalStringsql="selectaaafromt1";publicstaticString[]getArrayFromAccess(){String[]ret=newString[]{""};ArrayList<String>lst=newArrayList<String>();Connectioncon=null;Statementps=null;ResultSetrs=null;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");con=DriverManager.getConnection("jdbc:odbc:test1");ps=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);rs=ps.executeQuery(sql);while(rs.next()){rs.last();System.out.println(rs.getRow());}}catch(SQLExceptione){e.printStackTrace();}catch(Exceptione){e.printStackTrace();}finally{try{if(rs!=null){rs.close();}if(ps!=null){ps.close();}if(con!=null){con.close();}}catch(SQLExceptione){e.printStackTrace();}}returnlst.toArray(ret);}publicstaticvoidmain(String[]args){String[]array=TestResultRow.getArrayFromAccess();for(inti=0;i<array.length;i++){System.out.println(array[i]);}}}
解决方案十一:
回9楼:我令privatestaticfinalStringsql="selectaaafromt1";结果为1null是因为连接数据库出了问题吗?
解决方案十二:
我觉得可能是你选出来的东西里有允许空的字段,比如你上面的null,然后你获取该值,后面你又对该值进行了操作。你检查下吧!
解决方案十三:
每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分
解决方案十四:
在9楼的回复有点错误我令privatestaticfinalStringsql="select*fromsystem";
解决方案十五:
access中好象不支持selecttop的用法吧.....
解决方案:
这是数据库中的system表,也就是我开头出问题所查询的表,最后的几个变量没赋值,是这个原因吗?我赋上值结果也没变化id1name张三mail111@163.comwebsitetel123435oicq12356sitenameshopfax1234maddrmsnmnamecode
解决方案:
while(rs。next()){}
解决方案:
最常见的空指针异常。