【笔记】手写JDBC的整个过程
一、 JDBC:通过java与数据库交互。
- 注册数据库驱动 Class.forName("com.mysql.jdbc.Driver");
- 取得数据库连接对象Connection Connection conn=DriverManager.getConnection(url,user,password);
- 创建SQL执行对象 4.1 编写sql语句sql = ...; 4.2 获得语句执行对象 PrepardStatement ps = conn.getprepareStatement(sql);
- 执行SQL命令,并返回结果集 4.1 增删改操作 ps.executeUpdate(); 4.2 返回结果集 ResultSet rs = ps.executeQuery();
- 处理结果集 while(rs.next()){ rs.getString(int i); }
- 依次关闭结果集 rs.close(); ps.close(); conn.close();
二、数据源
因为每次都要创建数据库连接,使用完后又关闭,所以很耗资源。 数据源:每当需要连接时,就从连接池中获取,使用完之后,放回连接池
使用C3P0数据源 使用步骤:
- 导入jar包 mysql-connector-java-5.1.36-bin.jar c3p0-0.9.1.2.jar
- 编写配置文件 src/c3p0-config.xml
- 调用api // 创建c3p0数据源(连接池) DataSource ds = new ComboPooledDataSource(); 获取连接对象: ds.getConnection() 把连接对象放回连接池中: conn.close();
三、登录案例
- 导入jar包
- 创建项目基本包框架
- 前端页面
- 创建servlet: 创建一个类继承HttpServlet 在web.xml中注册servlet
<servlet> <servlet-name>helloservlet</servlet-name> <servlet-class>servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>helloservlet</servlet-name> <url-pattern>/helloservlet</url-pattern> </servlet-mapping>
- 重写doGet() doPost()方法 doPost方法调用doGet方法 servlet:主要用来获取请求中的数据,调用业务逻辑,最后分发转向
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("name"); String password = request.getParameter("password"); try { UserService us = new UserServiceImpl(); User user = us.findUser(name,password); if(user==null){ response.getWriter().print("name or password error"); }else{ response.getWriter().print("welcome:"+user.getName()+""); } } catch (SQLException e) { e.printStackTrace(); } }
完整代码示例:
import java.sql.DriverManager; import java.sql.Exception; public class jdbctest{ public static void main(String[] args) { query(); } public static void query() { java.sql.Connection conn = null; try{ //1.加载数据驱动 class.forName("com.mysql.jdbc.Driver"); //2.获得数据库连接 conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/jdbc_db", "root", "1234"); //3.创建语句 String sql = "select * from UserTbl"; //返回一个执行sql的句柄 java.sql.Statement stmt = conn.createStatement(); //4.执行查询 java.sql.ResultSet rs = stmt.executeQuery(sql); //5.遍历结果 while(rs.next) { int id = re.getInt(1); String username = re.getString(2); String password = rs.getString(3); int age = rs.getInt(4); System.out.println(id + username + password + age); } } catch(Exception e) { e.printStackTrace(); } finally { //6.关闭数据库连接 if(conn != null) { try{ conn.close(); }catch(SQLException e) { conn = null; e.printStackTrace(); } } } } }
四、mvc开发模式
m: model 模型 一般都是javabean v: view 视图 jsp c: controller 核心控制 servlet