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相关