使用JDBC获取数据库连接,在使用InputStream获取对应的Properties文件的数据库连接时,获取不成功,导致程序报空指针异常
											以下是客户程序: 程序代码:
程序代码:import import import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import java.util.Properties;
import org.junit.Test;
public class JDBCTest1 {
    /**
     * ResultSet:结果集,封装了使用JDBC进行查询的结果
     * 1、调用Statement对象的ExecuteQuery(sql)可以的到结果集
     * 2、ResultSet 返回的实际是一张数据比哦啊,有一个指针指向数据表的第一行的前面
     *   可以调用next()方法检测下一行是否有效,若有效则该方法返回true,且指针下移,
     *   相当于Iterator对象的hasNext()和Next()方法的结合体
     *  
     *3、当指针对位到一行时,可以通过调用getXxx(index)或者getXxx(conlumnname)
     *  获取每一列的遏制,例如getInt(1),getString("name")
     * 
     *4、ResultSet也需要进行关闭
     */
    @Test
    public void testResultSet() {
       //获取id=4的customer数据表的记录,并打印
        Connection conn =null;
        Statement statement =null;
        ResultSet rs =null;
        try {
            //1、获取Connection
            conn = JDBCTools.getConnection();
            //2、获取Statement
            statement = conn.createStatement();
            //3、准备Sql
            String sql = "SELECT id,NAME,email,birth \r\n" +
                    "FROM customers WHERE id=1;";
           
            //4、执行查询,得到ResultSet
            rs = statement.executeQuery(sql);
           
            //5、处理ResultSet
            if(rs.next()) {
                int id =rs.getInt(1);
                String name =rs.getString("name");
                String email =rs.getString(3);
                Date birth = rs.getDate(4);
               
                System.out.println(id);
                System.out.println(name);
                System.out.println(email);
                System.out.println(birth);
            }
            //6、关闭数据库资源
        }catch(Exception e) {
            e.printStackTrace();
        }finally {
            JDBCTools.releaseResouce(rs, statement, conn);
        }
    }
    }以下是工具类程序: 程序代码:
程序代码:import import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class JDBCTools {
   
    /**
     * 关闭statement,connection
     *
     * @param statement
     * @param conn
     */
    public static void releaseResouce (ResultSet rs,
            Statement statement,Connection conn) {
        if(rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        if(statement!=null) {
            try {
                //5、关闭statement对象
                statement.close();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            }
            if(conn != null) {
            try {
                //2、关闭连接
                conn.close();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            }
    }
    /**
     * 操作JDBC的工具类,其中封装了一些工具方法
     *
     * Version 1
     *
     * 1.获取连接 的方法
     * 通过读取配置文件从数据库获取一个连接
     * @return
     * @throws Exception
     */
    public static Connection getConnection() throws Exception {
        //1、准备连接数据库的4个字符串。
        //1)、创建Properties对象
        Properties properties = new Properties();
       
        //2)、获取jdbc.properties对应的输入流
        InputStream in =
                JDBCTools.class.getClassLoader().getResourceAsStream("jdbc.properties");
       
        //3)、加载2)对应的输入流
        properties.load(in);
       
        //4)、具体确定user,password等4个字符串
        String user = properties.getProperty("root");
        String password = properties.getProperty("1230");
        String jdbcUrl = properties.getProperty("jdbcUrl");
        String driver = properties.getProperty("driver");
       
        //2、加载数据库驱动程序(对应的Driver实现类中有注册驱动的静态代码块
        Class.forName(driver);
       
        //3、通过DriverManager的getConnection()方法获取数据库连接
        return  DriverManager.getConnection(jdbcUrl, user, password);
    }
}以下是jdbc.Properties文件的内容driver=com.mysql.jdbc.Driver jdbcUrl=jdbc:mysql://localhost:3306/atguigu user=root password=1230

 
											
 
	     
											

