Java JDBC

什么是JDBC?

JDBC的全称是Java数据库连接(Java Database connect),它是一套用于执行SQL语句的Java API。应用程序可通过这套API连接到关系数据库,并使用SQL语句来完成对数据库中数据的查询、更新和删除等操作

JDBC接口

Driver接口

Driver接口是所有JDBC驱动程序必须实现的接口,该接口专门提供给数据库厂商使用。在编写JDBC程序时,必须要把所使用的数据库驱动程序或类库加载到项目的classpath中,也就是mysql的Jar包

DriverManager接口

DriverManage类用来管理数据库中的所有驱动程序,是JDBC的管理层,作用于用户和驱动程序之间,跟踪可用的驱动程序,并在数据库的驱动之间建立连接

常用方法

  • getConnection(String URL,String user,String PassWord) 指定3个参数,分别是连接地址,用户名和密码

Connection接口

Connection 接口代表与特定的数据库的连接,要对数据库中的数据进行操作,首先要获取数据库连接,Connection就像在应用程序与数据库之间开通了一条通道.可以通过DriverManager类的getConnection()方法获取Connection的实例

常用方法

  • createStatement() 创建Statement对象

  • PrepareStatement() 创建预处理对象PrepareStatement

  • isReadOnly() 查看当前Connection对象的读取模式是否是只读形式

  • SetReadOnly() 设置当前Connection对象的读写模式,默认是非只读模式

  • close() 立即释放此Connection对象的数据库和JDBC资源,而不是自动释放

Statement接口

Statement接口用于创建向数据库中传递SQL语句的对象

常用方法

  • boolean execute(String sql) 执行给定的 SQL 语句,该语句可能返回多个结果

  • executeQuery(String sql) 执行查询的Sql语句 返回单个ResultSet对象

  • clearBatch() 清空此Statement对象的当前SQL命令列表

  • executeUpdate() 执行指定的SQL语句 该语句可以为INSERT UPDATE DELETE语句

  • close() 释放Statement实例占用的数据库和JDBC资源

PreparedStatement接口

PreparedStatement接口继承Statement,用于执行动态的SQL语句 ,通过PreparedStatement实例执行的SQL语句,将被编译并保存到PreparedStatement实例中,从而可以重复的执行该SQL语句。与创建Statement不同的是,需要根据sql语句创建PreparedStatement,数据库对带 ? 占位符的SQL进行预编译

常用方法

  • execute( ) 执行给定的 SQL 语句,该语句可能返回多个结果。

  • executeQuery( ) 在此preparedStatement对象中执行Sql查询语句,返回为查询数据集的对象

  • executeUpdate() 在此preparedStatement对象执行Sql语句,该SQL语句必须是一个INSERT UPDATE DELETE语句

Statement和prepareStatement的区别

  1. PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程
  2. 使用 Statement 对象。在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理。PreparedStatement 对象的开销比Statement大,对于一次性操作并不会带来额外的好处。当你需要执行Statement对象多次的时候,PreparedStatement对象将会大大降低运行时间,当然也加快了访问数据库的速度
  3. statement每次执行sql语句,相关数据库都要执行sql语句的编译,preparedstatement是预编译得, preparedstatement支持批处理

ResultSet接口

ResultSet接口类似于一个临时的数据表,用来暂时存放数据库查询操作获取到的数据集,数据库查询结果的返回值便为ResultSet类型

常用方法

  • getInt() 以int形式获取当前行指定的列

  • getFloat() 以Float形式获取当前行指定的列

  • getDate() 以Date形式获取当前行指定的列

  • getBoolean() 以Boolean形式获取当前行指定的列

  • getString() 以String形式获取当前行指定的列

  • getObject() 以Object形式获取当前行指定的列

  • next( ) 将指针向下移一行

  • updateInt() 用int值更新查找结果的指定列

  • updateFloat()用float值更新指定列

  • updateLong() 用指定的long值更新指定的列

  • updateString()用指定的"String"值更新指定列

  • updateObejct() 用object值更新指定的列

  • updatenull() 将指定的列值修改为null

  • updateDate() 用指定的Date值更新指定的列

  • updateDouble() 用指定的Double值更新指定的列

实现方法

1.加载JDBC驱动程序

//加载MySql的驱动类
Class.forName("com.mysql.jdbc.Driver") ;

2.提供JDBC连接的URL

//连接MySql数据库,用户名和密码都是root
String url = "jdbc:mysql://localhost:3306/数据库名" ;    
String username = "root" ;   
String password = "root" ;  
Connection con = DriverManager.getConnection(url , username , password ) ;  

3.创建一个Statement

三种类型:

  • 执行静态SQL语句。通常通过Statement实例实现
  • 执行动态SQL语句。通常通过PreparedStatement实例实现
  • 执行数据库存储过程。通常通过CallableStatement实例实现
Statement stmt = con.createStatement() ;   
PreparedStatement pstmt = con.prepareStatement(“insert into user values(?,?)”) ;   
CallableStatement cstmt = con.prepareCall("{CALL demoSp(? , ?)}") ; 

4.执行SQL语句

  • ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句,返回一个结果集(ResultSet)对象
  • int executeUpdate(String sqlString):用于执行INSERT、UPDATE或DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等
  • execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的语句
ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;   
int rows = stmt.executeUpdate("INSERT INTO ...") ;   
boolean flag = stmt.execute(String sql) ; 

5.处理结果

两种情况:

  1. 执行更新返回的是本次操作影响到的记录数
  2. 执行查询返回的结果是一个ResultSet对象

• ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些行中数据的访问

String name = rs.getString("name") ;   
String pass = rs.getString(1) ; // 此方法比较高效

6.关闭JDBC对象

  1. 关闭记录集
  2. 关闭声明
  3. 关闭连接对象
re.close();
stms.close();
con.close();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值