JDBC学习笔记

1.

JDBC概念图

2.

JDBC API 是 JAVA 官方提供的  供开发者调用的接口,接口再(java.sql包和javax.sql包里)

3.JDBC API

提供者:JAVA官方
内容:供开发者调用的接口

在java.sql和javax.sql包中

  • DriverManager 类
  • Connection接口
  • Statement接口
  • ResultSet接口

4.DriverManager

提供者:Java官方
作用:管理不同的JDBC驱动

5.JDBC 驱动

提供者:数据库厂商
作用:负责连接不同的数据库
6.JDBC的使用
1)加载数据库驱动,JAVA程序和数据库之间的桥梁(想象成基站)
2)获取Connection ,JAVA程序和数据库之间的一次链接(想象成打一次电话)
3)创建Statement,由Connection产生,执行SQL语句。
4)如果需要接收返回值,创建ResultSet对象,保存Statement执行之后所查询的结果。

7.具体操作
1)需要导驱动包
2)连接代码(使用的是sqlserver数据库)

public class Main {
	public static void main(String [] args){
	Statement stat=null;//将作用域扩大,因此放在这里
	Connection conn=null;//同上
	{
	try {
	//1.注册驱动
	  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
	//2.定义sql
	  String sql="insert into test values(1,'apple','女')";
	//获取Connection对象
	  conn=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=XM","sa","123456");
	 //4.获取执行sql的对象  Statement
	    stat=conn.createStatement();
	 //5.执行sql
          int count=stat.executeUpdate(sql);
           //6.处理结果
     	   System.out.println(count);//影响的行数
  	   if(count>0){
  	   System.out.print("数据库添加成功");
          }else{
           System.out.print("数据库添加失败");
     }
     } catch (ClassNotFoundException e) {
              e.printStackTrace();
 } catch (SQLException e) {  
  e.printStackTrace();
 }finally{
  //stat.close();
  //7.释放资源
  //避免空指针异常
    if(stat != null){
   try{stat.close();
       }catch(SQLException e){
   e.printStackTrace();}
         }
      if(conn != null){
   try{conn.close();
     }catch(SQLException e){
   e.printStackTrace(); }
   }
  
  }
 }
  }
}
     

3)增删查改,对于数据有修改的用executeUpdate(sql)方法,对于查用executeQuery(sql)方法

6.Statement

通常使用PreparedStatement 是Statement的子类,提供了SQL占位符的功能
使用Statement开发有两个问题:
1)需要频繁拼接String字符串,出错率较高
2)存在SQL注入的风险
SQL注入:利用某些系统没有对用户输入的信息进行充分检测,在用户输入的数据中注入非法的SQL语句,从而利用系统的SQL引擎完成而恶意行为的做法。(被人钻了空子)

7.数据库连接池

JDBC开发流程

  • 加载驱动(只需要加载一次)
  • 建立数据库连接(Connection)
  • 执行SQL语句(Statement)
  • ResultSet接收结果集(查询)
  • 断开连接,释放资源
    数据库连接对象是通过DriverManager来获取的,每次获取都需要向数据库申请获取链接,验证用户名和密码
    执行完SQL语句后断开连接,这样的方式会早长城资源的浪费,数据连接资源没有得到很好的重复利用。
    可以使用数据库连接池来解决。数据库连接池的基本思想就是为数据库建立一个缓冲池,预先向缓冲池中放入一定量的连接对象,当粗要获取数据库连接时,只需要从缓冲池中取出一个对象,用完之后再放回到缓冲池中,供下一次使用,做到了资源的重复利用。允许程序使用一个现有的,而不去冲重新创建。
    当数据库连接池中没有空闲的连接时,新的请求就会进入等待队列,等待其他线程的释放连接。

数据路连接池的实现

JDBC的数据库连接池使用javax.sql.DataSource 接口来完成的。DataSource是官方提供的接口,使用的时候开发者并不需要自己实现这个接口,可以使用第三方的工具,C3P0是一个常用的第三方实现,实际开发中直接使用即可完成数据库连接池的操作。
1)导入jar包(c3p0-0.9.1.jar)
两个方式的不同
2)代码
在这里插入图片描述
在这里插入图片描述

3)实际开发,将C3P0的配置信息定义再xml文件中,Java程序只需要加载配置文件即可完成数据库连接池的初始化操作。
注意:

  • 配置文件的名字必须是c3p0-config.xml
  • 初始化ComboPooledDataSource时,传入的参数必须是c3p0-config.xml中named-config标签的name属性值。

8.DBUtils

DBUtils可以帮助开发爱着完成数据的封装(结果集到Java对象的映射)
1)导包 (commons-dbutils-1.7.jar)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值