JDBC连接mysql数据库出现java.lang.NullPointerException

JSP文件内容:<%@pagecontentType="text/html;charset=GB2312"%><%@pageimport="java.util.*,jav... JSP文件内容:<%@ page contentType="text/html; charset=GB2312"%>
<%@ page import="java.util.*,java.sql.*,javax.servlet.*,javax.servlet.http.*"%>

<%
String sql=null;
String url=null;
Statement st=null;
try{
out.print("<b>创建开始...</b><br>");
sql="CREATE DATABASE whm";
url="jdbc:MySQL://localhost:3306/test?user=root&password=aa&characterEncoding=gb2312";
st=getStatement(url);//通过指定的url获得Statement对象,此函数将在步骤(2)中实现
st.execute(sql);
out.print("<b>数据库whm创建成功...</b><br>");
sql="CREATE TABLE `table` (`field1` int(11),`field2` char(20),`field3` char(10))";
url="jdbc:MySQL://localhost:3306/whm?user=root&password=aa&characterEncoding=gb2312";
st=getStatement(url);
st.execute(sql);
out.print("<b>表table创建成功...</b><br>");
out.print("<b>创建结束...</b><br>");
}
catch(Exception e){out.print("<b>创建失败</b>原因:"+e.toString());}
%>
<%!//连接数据库,取得Statement对象
public Statement getStatement(String url){
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection(url);
return con.createStatement();
}catch(Exception e){return null;}
}
%>
web.xml文件内容:<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<resource-ref>
<res-ref-name>jdbc/DBPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
JAR包为:mysql-connector-java-5.0.4-bin.jar
运行结果为:创建开始...
创建失败原因:java.lang.NullPointerException
哪位大侠帮我看看我的问题出现在哪里?
展开
 我来答
百度网友47638c80c
2011-07-28 · TA获得超过112个赞
知道答主
回答量:198
采纳率:100%
帮助的人:86.1万
展开全部
从输出来看,异常出现在第一个try块中。sql与url分别被赋值为字符串,没有问题。空指针异常只有可能出现在st这个对象的引用上。我猜测是getStatement(url)函数返回了空引用。具体情况要查看该函数的实现细节。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yueqiulin
2011-07-27 · TA获得超过429个赞
知道小有建树答主
回答量:591
采纳率:0%
帮助的人:344万
展开全部
sql="CREATE TABLE `table` (`field1` int(11),`field2` char(20),`field3` char(10))";
没有这种写法,
sql = "CREATE TABLE table(filed1 int(11),filed2 char(20),filed3 char(10)";
url="jdbc:MySQL://localhost:3306/whm?user=root&password=aa&characterEncoding=gb2312";
这句改为
url="jdbc:MySQL://localhost:3306/whm?user=root&password=aa&useUnicode=true&characterEncoding=gb2312";
追问
不行,还是显示java.lang.NullPointerException
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
朴质且温馨丶宝贝4
2011-07-29 · TA获得超过187个赞
知道答主
回答量:62
采纳率:0%
帮助的人:41.5万
展开全部
把所有异常信息贴出来 ,要不上哪知道第几行 ~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
潜忘杯制此1M
2011-07-27
知道答主
回答量:9
采纳率:0%
帮助的人:1.5万
展开全部
访问对象为null异常
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雄色旭l
2011-07-27
知道答主
回答量:15
采纳率:0%
帮助的人:14.5万
展开全部
Class.forName("com.mysql.jdbc.Driver").newInstance();
追问
不行,还是显示java.lang.NullPointerException
追答
getStatement方法里面的问题,没有拿到数据库的连接
检查这个,你按照这样试试看。还有就是你的URL,USER,PASSWORD是否正确。
DriverManager.getConnection(url,user,password);

catch(Exception e){
System.out.println(e); //把异常打印出来你就知道是什么问题了 。
return null;}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式