JDBC概述一(JDBC常用的API)

前言:在实际开发中,项目中的数据通常是存储在数据库中的,要想使用其中的数据,就必须编写程序连接到数据库对数据进行相关操作。Java对数据库的操作提供了相应的支持,它提供了一套可以执行SQL语句的API,即JDBC。

JDBC(Java DataBase Connectivity,Java数据库连接)的定义:

是一套执行SQL语句的Java API。应用程序可通过这套API连接到关系型数据库,并使用SQL语句来完成对数据库中数据的查询,新增,更新和删除等操作。

JDBC常用API:

在正式讲解使用JDBC开发数据库应用之前,需要先了解JDBC常用的API。JDBC API主要位于java.sql包中,该包定义了一些列访问数据库的接口和类。

1.Driver接口:Driver接口是所有JDBC驱动程序必须实现的接口,该接口专门提供给数据库厂商使用。需要注意的是,在编写JDBC程序时,必须要把要使用的数据库驱动程序或类库加载的项目的classpath中(这里是指数据库的驱动JAR包)。

2.DriverManage类:DriverManage类用于加载JDBC驱动并且创建与数据库的连接,重要方法如下:

static Connection getConnection(String url,String user,String pwd):该方法用于建立和数据库的连接,并返回表示连接的Connection对象。

加载数据库驱动:通常使用Class类的静态方法forName()来实现。

3.Connection接口:代表Java程序和数据库连接的对象,只有获得该连接对象后,才能访问数据库并操作数据库。在该接口中,常用方法如下:

Statement createStatement():该方法用于返回一个向数据库发送语句的Statement对象。

PrepareStatement perpareStatement(String sql):该方法用于返回一个PrepareStatement对象,该对象用于向数据库发送参数化的SQL语句。 

CallableStatement prepareCall(String sql) :该方法用于返回一个CallableSatatement对象,该对象用于调用数据库的存储过程。

4.Statement接口:用于执行静态的SQL语句,并返回一个结果对象。Statement接口对象可以通过Connection实例的createStatement()方法获得,该对象会把静态的SQL语句发送到数据库中编译执行,然后返回数据库的处理结果。 在该接口中,常用方法如下:

boolean execute(String sql):用于执行各种sql语句,返回一个boolean类型的值,如果为true,表示执行的sql语句有查询结果,可通过Statement的getResultSet()方法获得查询结果。

int executeUpdate(String sql) :用于执行SQL中的insert,update,delete语句,该方法返回一个int类型的值,表示数据库中受该SQL语句影响的记录条数。

ResultSet executeQuery(String sql):用于执行SQL中的select语句,该方法返回一个表示查询结果的ResultSet对象。  

5.PrepareStatement接口:Statement接口封装了JDBC执行SQL语句的方法,虽然可以完成Java程序执行SQL语句的操作,但是在实际开发中往往需要将程序中的变量作为SQL语句查询的条件,使用Statement接口操作SQL语句过于繁琐,并且存在安全性问题。针对此问题,JDBC API中提供了扩展的PrepareStatement接口。PrepareStatement是Statement接口的子接口,用于执行预编译的SQL语句。该接口扩展带有参数SQL语句的执操作,应用接口的SQL语句可以使用占位符“?”来代替其参数,然后通过setXxx()方法为SQL语句的参数赋值。常用方法如下:

int executeUpdate():在此PrepareStatement对象中执行SQL语句,该语句必须是一个DML语句或者是无返回内容的SQL语句,如DDL语句。

ResultSet executeQuery(): 在此PrepareStatement对象中执行SQL查询,该方法返回的是ResultSet对象。

void setInt(int parameterIndex,int x):将指定参数设置为给定的int值。 

void setFloat(int parameterIndex,Float x):将指定参数设置为给定的float值。 

void setString(int parameterIndex,String x):将指定参数设置为给定的String值。 

void setDate(int parameterIndex,Date x):将指定参数设置为给定的Date值。 注意:参数Date的类型必须是java.sql.Date而不是java.util.Date

void addBatch():将一组参数添加到PreparedStatement对象的批处理命令中。

在为SQL语句中的参数赋值时,可以通过输入参数与SQL类型相匹配的setXxx()方法,例如字段的数据类型为int或Interger,那么该使用setInt()方法,也可以通过setObject()方法设置多种类型的输入参数。例如:

//假设users表中的字段id,name,email类型分别是int,varchar,varchar
String sql="INSERT INTO users(id,name,email)VALUEs(?,?,?)";
PrepareStatement preStmt=con.perpreStatement(sql);
preStmt.setInt(1,1);//使用参数与SQL类型匹配的方法
preStmt.setString(2,"zhangsan");//使用参数与SQL类型匹配的方法
preStmt.setObject(3,"zs@sina.com");//使用setObject()方法设置参数
preStmt.ExecuteUpdate();

6.ResultSet接口

该接口用于保存JDBC执行查询时返回的结果集,该结果集封装到一个逻辑表格中。 在ResuleSet接口内部中有一个指向表格数据行的游标(或指针),ResultSet对象初始化时,游标在表格的第一行之前,调用next()方法可将游标移动到下一行。如果下一行没有数据,则返回false。在应用程序经常使用next()方法作为while循环的条件来迭代ResultSet结果集。常用方法如下:

String getString(int columnIndex):用于获取指定字段的String类型的值,参数columnIndex代表字段的索引。

String getString(int columnName):用于获取指定字段的String类型的值,参数columnIndex代表字段的名称。

int getInt(int columnIndex):用于获取指定字段的int类型的值,参数columnIndex代表字段的索引。

int getInt(String columnName):用于获取指定字段的int类型的值,参数columnIndex代表字段的名称。

Date getDate(int columnIndex)::用于获取指定字段的Date类型的值,参数columnIndex代表字段的索引。

Date getDate(String columnName):用于获取指定字段的Date类型的值。参数columnName代表字段的名称。

boolena next():将油标从当前位置向下移一行

boolean absolute(int row):将游标移动到此ResultSet对象的指定行

void afterLast():将游标移动到此ResultSet对象的末尾,即最后一行之后。
void beforeFirst():将游标移动到此ResultSet对象的开头,即第一行之前。
boolean previous():将游标移动到此ResultSet()对象的上一行。

boolean last():将游标移动到此ResultSet()对象的最后一行。

ResultSet()接口中定义了大量的getXxx()方法,而采用哪种getXxx()方法取决于字段的数据类型。程序既可以通过字段的名称来获取指定数据,也可以通过字段的索引来获取指定的数据,字段的索引是从1开始编号的。例如,数据表的第一列字段名为id,字段类型为int,既可以使用getInt(“id”)获取该列的值,也可以使用getInt(1)获取该列的值。 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值