JDBC粗浅理解

来源:互联网 发布:新加坡旅游消费知乎 编辑:程序博客网 时间:2024/06/05 20:49

JDBC概念:

JDBC简而言之就是java数据库连接。

JDBC访问数据库支持两层模型,也支持三层模型。

我使用的服务端是mysql,在使用JDBC操作数据库之前必须的做如下工作:

下载mysql-connector-java-5.1.39-bi.jar包,将其放到工程目录的lib文件下,添加buildpath即可。

JDBC只要掌握3个主要类基本上就算入门了(注意jdbc用到的类均应用java.sql包下)。

1.Connection

程序与数据库的连接类,是基于TCP协议的连接,连接需要三次握手花时相对较长,因此连接需要进行重用,且连接完毕需要关闭否则容易导致数据库连接次数用完。获得Connection对象的方法如下:

/** * url指的是jdbc协议地址 * user 连接mysql的用户名 * password 密码 */Connection conn = DriverManager.getConnection(url, user, password);

2.Statement

执行SQL语句的类,代码如下:

//获取Statement对象Statement st = conn.createStatement();//该方法对应的是sql语句中的selectst.executeQuery(sql); //该语句对应的是sql语句中的insert,delete,updatest.executeUpdate(sql);

3.ResultSet

结果集,这个是statement执行executeQuery()方法时才会返回的结果集。

下面就要敲代码来看看怎么连接mysql的了:

在这之前先要写入连接数据库的配置信息db.properties,包含url,user,password

放在src目录下,结构如下

db.properties里面代码如下


根据Connection要求,我们需要对连接类进行重用,所以我把连接的操作封装到一个工具类中DBUtil,利用饿汉式单例,代码如下:


import java.io.IOException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Properties;/** * 恶汉单例,重用conn *  */public class DBUtil {private static Connection conn;/** * 获取Connection实例的方法 * @return */public static Connection getConnection() {if (conn == null) {Properties p = getProperties();try {conn = DriverManager.getConnection(p.getProperty("url"),p.getProperty("user"), p.getProperty("password"));} catch (SQLException e) {e.printStackTrace();}}return conn;}/** * 获取db文件属性类的方法 */private static Properties getProperties() {Properties p = new Properties();try {p.load(DBUtil.class.getClassLoader().getResourceAsStream("db.properties"));return p;} catch (IOException e) {e.printStackTrace();}return null;}/** * 关闭资源 * @param rs * @param st * @param conn */public static void close(ResultSet rs, Statement st, Connection conn){if (rs != null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if (st != null) {try {st.close();} catch (SQLException e) {e.printStackTrace();}}if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}}
然后就是三大类读取操作数据库信息登场,我这里只实现了查询数据,代码如下

import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import com.csdn.bean.Dept;public class ConnectionDemo {Connection conn = DBUtil.getConnection();public static void main(String[] args) {ConnectionDemo cd = new ConnectionDemo();Dept dept = cd.setectDept(10);System.out.println(dept);}/** * 根据部门id * 查询dept表中数据方法 */private Dept setectDept(int deptno) {Statement st = null;ResultSet rs = null;Dept dept = null;try {st = conn.createStatement();String sql = "select * from dept where deptno = '" + deptno + "'";rs = st.executeQuery(sql);if (rs.next()) {dept = new Dept();dept.setDeptno(rs.getInt("deptno"));dept.setDname(rs.getString("dname"));dept.setLoc(rs.getString("loc"));}} catch (SQLException e) {e.printStackTrace();}finally{DBUtil.close(rs,st,conn);}return dept;}}

to be continue......





1 0
原创粉丝点击