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.
-
注册驱动
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
-
建立连接
//参数一:协议+访问的数据库, 参数二:用户名, 参数三:密码 Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/student", "root", "password");
-
创建statement对象.跟数据库打交道,一定需要这个对象
Statement st = conn.createStatement();
-
执行sql语句,得到ResultSet对象
String sql = "select * from t_stu"; ResultSet rs = st.executeQuery(sql);
-
遍历结果集,调用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); }
-
释放资源(资源的释放顺序与创建顺序相反)
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工具类的创建
-
资源释放工作的整合
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){ //... }
-
防止驱动二次注册:
在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; }
-
使用properties配置文件
实际工作中常将数据库用户名和密码等信息存储在properities文件中,通过工具类完成对配置文件的访问.- 创建一个properties文件内容如下:
driverClass=com.mysql.jdbc.Driver url=jdbc:mysql://localhost/student name=root password=123456
- 通过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);
}
}