当前位置:编程学习 > JAVA >>

Java数据库连接报错Exception in thread "main" java.lang.NullPointerException

package www.csdn.net.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class UserDao {

private static Connection conn;
private Statement stmt;
private ResultSet rs;

//首先是不是连接上数据库
static {

try {
//第一步:加载驱动程序
Class.forName("com.mysql.jdbc.Driver");
long startTime = System.currentTimeMillis();
//第二步:创建连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/csdn", "root", "root");
//conn = DriverManager.getConnection("jdbc:mysql:///csdn", "root", "root");
long endTime = System.currentTimeMillis();

System.out.println("建立连接所需要的时间::::"+(endTime-startTime));

} catch (ClassNotFoundException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

//创建一个表
public boolean  createTable(){
//第一步:定义返回结果
boolean flag = true;
//第三步:定义出操作sql语句
String sql ="create table user(" +
"id int auto_increment primary key," +
"name varchar(20) not null," +
"pass varchar(20) not null," +
"birth date);";

try {
//第四步:根据conn对象的createStatement() 获取 Statement对象
stmt = conn.createStatement();
//第五步:执行sql语句
 flag = stmt.execute("drop table user");//如果第一个结果为 ResultSet 对象,则返回 true;如果其为更新计数或者不存在任何结果,则返回 false 

 int i = stmt.executeUpdate(sql);//create语句 
    System.out.println(i+"====");
 if(i>0){
 flag=false;
 }
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

return flag;
}


//插入语句
public boolean insert(){
//第一步:定义返回值
boolean flag = false;

//第三步:定义sql语句
String sql = "insert into user(name,pass,birth) values('chenhj','csdn','2013-10-02')";

try {
//第四步:根据conn对象的createStatment()获取stmt对象
stmt = conn.createStatement();
//第五步:执行sql语句
int i = stmt.executeUpdate(sql);
System.out.println(i+"----------------");
//第六步:
if(i>0){
flag = true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//第七步:释放资源
if(stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//第二步:返回结果
return flag;
}
//更新语句
public boolean update(){
//第一步:定义返回值
boolean flag = false;

//第三步:定义sql语句
String sql = "update user set name='junge',pass='123',birth='1986-10-02' where id =1 ";

try {
//第四步:根据conn对象的createStatment()获取stmt对象
stmt = conn.createStatement();
//第五步:执行sql语句
int i = stmt.executeUpdate(sql);
System.out.println(i+"----------------");
//第六步:
if(i>0){
flag = true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//第七步:释放资源
if(stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//第二步:返回结果
return flag;
}
//删除语句
public boolean deleteById(){
//第一步:定义返回值
boolean flag = false;

//第三步:定义sql语句
String sql = "delete from user where id=1 ";

try {
//第四步:根据conn对象的createStatment()获取stmt对象
stmt = conn.createStatement();
//第五步:执行sql语句
int i = stmt.executeUpdate(sql);
System.out.println(i+"----------------");
//第六步:
if(i>0){
flag = true;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
//第七步:释放资源
if(stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//第二步:返回结果
return flag;
}




public void findAll(){
//第三步:定义sql语句
String sql ="select id,name,pass,birth from user";
try {
//第四步::根据conn对象的createStatment()获取stmt对象
stmt = conn.createStatement();
//第五步:执行sql语句
rs = stmt.executeQuery(sql);
//第六步:判断
while(rs.next()){
System.out.print("id=="+rs.getInt(1)+","+"name=="+rs.getString(2)+","+"pass=="+rs.getString(3)+","+"birth=="+rs.getDate(4));
    System.out.println();
    System.out.print("id=="+rs.getInt("id")+","+"name=="+rs.getString("name")+","+"pass=="+rs.getString("pass")+","+"birth=="+rs.getDate("birth"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


}

public static void main(String[] args) {

UserDao u = new UserDao();

/*boolean flag = u.createTable();
if(flag){
System.out.println("user表没创建成功");
}else{
System.out.println("user表已经创建");
}*/

/*boolean flag = u.insert();
if(flag){
System.out.println("插入成功");
}else{
System.out.println("插入失败");
}*/


/* boolean flag = u.update();
if(flag){
System.out.println("更新成功");
}else{
System.out.println("更新失败");
}*/
/*boolean flag = u.deleteById();
if(flag){
System.out.println("删除成功");
}else{
System.out.println("删除失败");
}*/

u.findAll();

//crud操作
}
}


Exception in thread "main" java.lang.NullPointerException
at www.csdn.net.dao.UserDao.crateTable(UserDao.java:44)
at www.csdn.net.dao.UserDao.main(UserDao.java:66) 数据库 mysql jdbc java --------------------编程问答--------------------
Exception in thread "main" java.lang.NullPointerException
at www.csdn.net.dao.UserDao.crateTable(UserDao.java:44)
at www.csdn.net.dao.UserDao.main(UserDao.java:66) 


通过异常分析,问题在UserDao类crateTable方法44行,空指针异常。
可以copy出来你的crateTable方法 大家分析下。
异常中写的是:crateTable
而你代码中的:createTable
是不是有问题啊 兄弟。检查检查。
补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,