原生JDBC连接总结

来源:互联网 发布:淘宝卖家工具源码 编辑:程序博客网 时间:2024/05/22 03:44

今天开始继续编写代码,用的IDE是Intellij Idea。

是在github上寻找到一个基础的涉及[会议管理系统]的web设计,在下载下来源码并重新编写源码,有如下感受。

该系统很少使用第三方框架,完整来说没有熟悉的ibatis,mybatis,spring,亦或是log4j这样的日志管理。

主要涉及技术:JDBC,MySQL,Servlet,Filter,Listener,jsp,jQuery、Ajax

重新复习了下大学的课程。

先从类和数据库交互说起,每次从页面传来的请求通过Web.xml找到对应的servlet处理类,没有spring的注入,那么每个类在使用的时候都需要重新创建一个毋庸置疑。

从servlet的doGet和doPost调用Service中的方法,Sevice调用Dao层的处理,Dao层是我第一个研究的重点,

服务器到数据库的交互不可无中生有,因此,在Dao中的每一次处理都会有一次数据库的连接,数据的处理,处理的结果,连接的断开。从代码来看主要涉及

import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;
这三个类,

Connection处理与数据库的连接,每次连接都需要驱动注册,连接的具体条件请参考这篇文章,很详细的解释了基础连接[原生JDBC]

PreparedStatement的对象通过connection.prepareStatement("Sql语句")来新建出来,这里需要注意的是PreparedStatement继承Statement类,算是对父类进行了优化处理,对于初学者很容易能掌握。

ResultSet是sql语句执行的结果,主要针对查询操作。当你要取出结果集中的数据时,通过while循环,条件是resultSet.next(),可以直接用resultSet.get属性("表列名")/get属性(index),index是查询结果的第几列的意思。

con = DBUtils.getConnection();ps = con.prepareStatement("SELECT * FROM employee WHERE username=? AND password=?");ps.setString(1, userName);ps.setString(2, password);rs = ps.executeQuery();if (rs.next()) {    return new Employee(rs.getInt("employeeid"), rs.getString("employeename"), rs.getString("username"), rs.getString("phone"), rs.getString("email"), rs.getInt("status"), rs.getInt("departmentid"), rs.getString("password"), rs.getInt("role"));}
上面代码就是一个数据库连接,通过用户名和密码查询一个员工实体的过程。

与快捷方便的框架相比,记住每次数据库连接后都需要关闭连接,依次关闭ResultSet,PreparedStatement,Connection!!

未完待续...

原创粉丝点击