JDBC01:JDBC的基本使用

使用JDBC之前的准备

什么是JDBC?
SUN公司提供的一种数据库访问规则、规范, 由于数据库种类较多,并且java语言使用比较广泛,sun公司就提供了一种规范,让其他的数据库提供商去实现底层的访问规则. 我们的java程序只要使用sun公司提供的jdbc驱动即可。

要使用JDBC,要提前下载对应数据库的JDBC驱动,是一个jar文件,在项目目录下新建lib文件夹,并将我们下载的jar文件放在这个lib文件夹下,再右键点击jar文件,依次选择"build path"->“add to path”,之后可以在navigator中看到jar文件被加载.
在这里插入图片描述
JDBC版本与数据库的版本有一定的对应关系,这里JDBC的版本为mysql-connector-java-5.1.7,数据库为mysql5.164

使用JDBC的基本步骤

下面程序用JDBC完成一个对mysql数据库的查询,数据库名为student,表名为t_stu.

  1. 注册驱动

    DriverManager.registerDriver(new com.mysql.jdbc.Driver());
    
  2. 建立连接

    //参数一:协议+访问的数据库, 参数二:用户名, 参数三:密码
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/student", 
    "root", "password");
    
  3. 创建statement对象.跟数据库打交道,一定需要这个对象

    Statement st = conn.createStatement();
    
  4. 执行sql语句,得到ResultSet对象

    String sql = "select * from t_stu";
    ResultSet rs = st.executeQuery(sql);
    
  5. 遍历结果集,调用rs的next()方法

    while(rs.next()){
    	int id = rs.getInt("id");
    	String name = rs.getString("name");
    	int age = rs.getInt("age");
    	System.out.println("id="+id + ",name="+name+",age="+age);
    }
    
  6. 释放资源(资源的释放顺序与创建顺序相反)

    if (rs != null) {
        try {
            rs.close();
        } catch (SQLException sqlEx) { } // ignore 
        rs = null;
    }
    if (st != null) {
        try {
            st.close();
        } catch (SQLException sqlEx) { } // ignore 
        st = null;
    }
    if (conn != null) {
        try {
            conn.close();
        } catch (SQLException sqlEx) { } // ignore 
        conn = null;
    }
    

JDBC工具类的创建

  1. 资源释放工作的整合

    public static void release(Connection conn , Statement st , ResultSet rs){
    	closeRs(rs);
    	closeSt(st);
    	closeConn(conn);
    }
    
    private static void closeRs(ResultSet rs){
    	try {
    		if(rs != null){
    			rs.close();
    		}
    	} catch (SQLException e) {
    		e.printStackTrace();
    	}finally{
    		rs = null;
    	}
    }
    
    private static void closeSt(Statement st){
    	//...
    }
    
    private static void closeConn(Connection conn){
    	//...
    }
    
  2. 防止驱动二次注册:
    在com.mysql.jdbc.Driver类中已经存在加载驱动的静态代码块,因此我们不需要显式地重复创建驱动

    	public static Connection getConn(){
    		Connection conn = null;
    		try {
    			Class.forName(driverClass);
    			conn = DriverManager.getConnection(url, name, password);
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		return conn;
    	}
    
    
  3. 使用properties配置文件
    实际工作中常将数据库用户名和密码等信息存储在properities文件中,通过工具类完成对配置文件的访问.

    1. 创建一个properties文件内容如下:
    driverClass=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost/student
    name=root
    password=123456		
    
    1. 通过java.util.Properities对象导入输入流
    static {
    		try {
    			// 创建一个属性配置对象
    			Properties properties = new Properties();
    			InputStream is = new FileInputStream("jdbc.properties");
    
    			// 导入输入流。
    			properties.load(is);
    
    			// 读取属性
    			driverClass = properties.getProperty("driverClass");
    			url = properties.getProperty("url");
    			name = properties.getProperty("name");
    			password = properties.getProperty("password");
    
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    }
    

使用JDBC执行sql语句的基本过程

Connection conn = null;
Statement st = null;
ResultSet rs = null;

try {
	// 1. 获取连接对象
	conn = JDBCUtil.getConn();
	// 2. 根据连接对象,得到statement
	st = conn.createStatement();

	// 3. 执行sql语句,返回ResultSet
	String sql = "select * from t_stu";
	rs = st.executeQuery(sql);

	// 4. 遍历结果集
	while (rs.next()) {
		String name = rs.getString("name");
		int age = rs.getInt("age");

		System.out.println(name + "   " + age);
		}
	} catch (SQLException e) {
		e.printStackTrace();
	} finally {
		JDBCUtil.release(conn, st, rs);
	}
}

猜你喜欢

转载自blog.csdn.net/ncepu_Chen/article/details/87922290
今日推荐