java web开发(九)JDBC

    JDBC(Java Database Connectivity)是一套用于执行SQL语句的Java API,应用程序可通过这套API连接到数据库,并使用SQL语句对数据库进行增删改查等操作。

组成部分:

  • JDBC API:供应用程序调用的Java API。
  • 驱动管理器:负责加载JDBC驱动器和数据库连接,DriverManager类。
  • 驱动器API:Sun公司制定,Driver接口。
  • JDBC驱动器:是数据库驱动程序,由数据库厂商创建。

一 JDBC API

1.Driver接口

所有JDBC驱动程序必须实现该接口,该接口专门提供给数据库厂商使用。

2.DriverManager类

用于加载JDBC驱动并且创建于数据路的连接。

方      法功能描述
registerDriver(Driver driver)加载JDBC驱动程序
getConnection(String url,String user,String pwd)创建和数据库连接,返回Connection对象

3.Connection接口

代表和数据库的连接。

方    法功能描述
getMetaData()返回表示数据库的元数据的DatabaseMetaData对象
createStatement()创建一个Statement对象来将SQL语句发送到数据库库

prepareStatement(String sql)

创建PreparedStatement对象
prepareCall(String sql)创建CallableStatement对象

4.Statement接口

用于向数据库发送SQL语句。

方      法功能描述
execute(String sql)执行各种sql语句,返回boolean类型值
executeUpdate(String sql)执行insert,update,delete语句,返回int类型
executeQuery(String sql)执行select语句,返回ResultSet对象

5.PreparedStatement接口

是Statement的子接口。Statement对象每次执行SQL语句时,都会对其进行编译,当多次执行相同的SQL语句时效率会降低,PreparedStatement可对SQL语句预编译,即对每个编译后的SQL语句缓存,当执行相同SQL语句时,无需再次对SQL语句再进行编译而是直接使用。

6.CallableStatement接口

是PreparedStatement的子接口,用于执行SQL存储过程。

7.ResultSet接口

表示select查询语句得到的结果集,结果是以逻辑表格的形式组织存在的,通过游标指向访问每行数据。

方     法功能描述
getString(int columnIndex)获取指定索引字段的String值
getString(String columnName)获取指定字段名称的String值
getInt(int columnIndex)
getInt(String columnName)
getDate(int columnIndex)
getDate(String columnName)
next()将游标移动到当前位置下一行
absolute(int row)将游标移动到指定行
afterLast()将游标移动到最后一行
beforeFirst()将游标移动到第一行
previous()移动到当前行的上一行
last()移动到最后一行

二 JDBC访问数据库

以MySql数据库为例

1.注册驱动

Class.forName("com.mysql.jdbc.Driver");

2.获取数据库连接

Connection conn = DriverManager.getConnection(String url, String user, String password);

3.获取Statement对象

Statement statement = conn.createStatement();

4.执行SQL语句

ResultSet set = statement.execute(String sql);

5.操作ResultSet集合

操作方法见上述

6.释放数据库资源

set.close();
statement.close();;
conn.close();

三 大数据处理

大文本数据CLOB和二进制数据BLOB必须使用PreparedStatement处理,所用操作都以IO流的形式进行存取。

方     法功能描述
setCharacterStream(int parameterIndex, java.io.Reader reader, int length)写入文本
setBinaryStream(int parameterIndex, java.io.InputStream x, long length)写入二进制数据

四 批处理

preparedStatement批处理

Connection conn = DriverManager.getConnection(String url, String user, String password);
String sql = "INSERT INTO users(name, password, email, birthday) VALUES(?, ?, ?, ?)";
PreparedStatement preparedStatement = conn.prepareStatement(sql);
for(int i=0; i<4; i++){
    preparedStatement.setString(1,"name"+i);
    preparedStatement.setString(2,"password"+i);
    preparedStatement.setString(3,"email"+i);
    preparedStatement.setDate(4,Date.valueOf("1990-1-1"));
}
preparedStatement.executeBatch();

转载于:https://my.oschina.net/kun123/blog/913372

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值