在JDBC(mySql)程序中获取空指针异常

时间:2014-06-13 17:11:01

标签: java mysql eclipse jdbc nullpointerexception

我检查了所有内容,如用户名,密码,db_url,表名等,但我仍然得到此输出---连接到数据库 创建声明 显示java.lang.NullPointerException

这是我的代码,(我正在使用eclipse Kepler EE和MySQL 5.6.17.0)

import java.sql.*;
public class Demo {
static final String JDBC_DRIVER="com.mysql.jdbc.Driver";
static final String DB_URL="jdbc:mysql://localhost/sample";
static final String USER="root" ;
static final String PASS="root";
public static void main(String[] args)
{
    Connection conn=null;
    Statement stmt=null;
    try
    {

        Class.forName("com.mysql.jdbc.Driver");
        System.out.println("connecting to database");
        conn=DriverManager.getConnection(DB_URL, USER, PASS);
        System.out.println("creating statement");
        String sql="select * from sample";
        ResultSet rs=stmt.executeQuery(sql);
        while(rs.next())
        {
            int eid=rs.getInt("id");
            String ename=rs.getString("name");
            System.out.print(eid+"\t");
            System.out.print(ename);
            System.out.println("");

        }
        rs.close();
        stmt.close();
        conn.close();


    }catch(Exception e)
    {
        System.out.println(e);
    }
    finally
    {
        try
        {
            if(stmt!=null)
            {
                stmt.close();
            }
        }catch(Exception e)
        {
            System.out.println(e);
        }
        try
        {
            if(conn!=null)
            {
                conn.close();
            }
        }catch(Exception e)
        {
            System.out.println(e);
        }
    }
}
}

3 个答案:

答案 0 :(得分:0)

您没有创建stmt对象

stmt = conn.createStatement( );

您必须在此行ResultSet rs=stmt.executeQuery(sql);

之前添加上一行

您正在null对象上执行查询。 因此获得NPE

答案 1 :(得分:0)

我认为你的陈述没有确定。它始终为空。

我认为你应该使用它:

stmt = conn.createStatement( );

答案 2 :(得分:0)

您设置Statement stmt=null;并且以后永远不会对其进行初始化。