JDBC的使用

JDBC

一.JDBC概述

JDBC(java database connectivity)是SUN公司提供的一套操作数据库的标准规范。

JDBC与数据库驱动的关系:接口与实现类的关系。MySQL驱动就是遵守JDBC规范的一个数据库驱动。

二.JDBC的核心对象

1.DriverManager:用于注册数据库驱动的类。使用DriverManager对象可以创建用于连接数据库的Connection对象。DriverManager对象可以连接JDBC支持的所有数据库,连接之后依据不同的数据库选择不同的接口实现类进行数据库操作。

注册数据库驱动的代码如下

DriverManager.registerDriver(new com.mysql.jdbc.Driver());

但是不建议使用此方式注册驱动,原因如下

1.此方式导致驱动被注册2次,造成DriverManager中产生两个一样的驱动

2.此方式强烈依赖数据库的驱动jar。

解决办法:利用反射技术通过完整类名将类加载到内存

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

2.Connection: 用于与数据库建立的连接的接口。使用Connection对象可以创建用于操作数据库的对象,例如Statement对象。

建立数据库连接的代码如下

static DriverManager.getConnection(String url, String user, String password);

Connection对象的常用方法如下

createStatement():创建向数据库发送sql的statement对象。
prepareStatement(sql) :创建向数据库发送预编译sql的PrepareSatement对象。
setAutoCommit(boolean autoCommit):设置事务是否自动提交。默认为true。
commit() :在此连接上提交事务。
rollback() :在此连接上回滚事务。
void close();关闭Connection对象,释放资源。

3.Statement: 用于向数据库发送sql语句的接口。使用Statement对象可以让数据库执行SQL语句,并返回相应SQL语句的执行结果。如果执行SQL查询语句,会返回查询的结果集ResultSet对象。如果执行SQL增删改语句,会返回执行SQL后数据库受影响的行数的int类型对象。

Statement对象常用方法如下

ResultSet  executeQuery(String sql) 根据查询语句返回ResultSet结果集。只能执行select语句。
int executeUpdate(String sql) 执行(insert update delete)语句,返回受影响的行数。
boolean execute(String sql)  此方法可以执行任意sql语句。返回boolean值,表示是否返回ResultSet结果集。仅当执行select语句,且有返回结果时返回true, 其它语句都返回falsevoid close();关闭Statement对象,释放资源。

注意:在使用Statement对象书写SQL语句时,如果数据库是字符类型,传递的参数需要加上单引号。与使用命令行窗口书写的SQL语句相同。

4.ResultSet: 用于获得结果集的接口。使用Statement对象执行查询SQL语句后会得到ResultSet对象。ResultSet对象类似于一张表格,例如在命令行窗口(cmd)执行查询SQL语句后,命令行窗口会打印出一张表格,表格里显示SQL语句的查询结果,ResultSet对象和表格非常类似。我们可以把ResultSet对象的结果集叫做表格。

ResultSet对象提供一个游标,默认游标指向表格第一行之前。我们可以使用代码将游标切换到表格的任意一行上,然后使用代码取出这一行上任意一列的数据。

ResultSet对象切换游标到表格的任意一行的方法如下

boolean next();将光标从当前位置向下移动一行。
boolean previous();将光标从当前位置向上移动一行。
boolean absolute(int row);根据行的索引定位移动到指定索引行。行的索引从1开始。如果给定行编号为负,则将指针移动到相对于结果集末尾的绝对行位置。如果指针位于结果集上,则返回 true;否则返回 falsevoid afterLast();将光标移动到末尾,正好位于最后一行之后。
void beforeFirst();将光标移动到开头,正好位于第一行之前。

ResultSet对象获取游标所在的行上的任意一列数据的方法如下。注意:要根据数据库字段的类型选择不同的方法获取数据,否则可能出现异常。

Object getObject(int ColumnIndex); 根据序号取值,索引从1开始。
Object getObject(String ColomnName); 根据列名取值。
int getInt(int colIndex);以int形式获取ResultSet结果集当前行指定列号的值。
int getInt(String colLabel);以int形式获取ResultSet结果集当前行指定列名的值。
float getFloat(int colIndex);以float形式获取ResultSet结果集当前行指定列号的值。
float getFloat(String colLabel);以float形式获取ResultSet结果集当前行指定列名的值。
String getString(int colIndex);以String 形式获取ResultSet结果集当前行指定列号的值。
String getString(String colLabel);以String形式获取ResultSet结果集当前行指定列名的值。
Date getDate(int columnIndex); 以Date 形式获取ResultSet结果集当前行指定列号的值。
Date getDate(String columnName);以Date形式获取ResultSet结果集当前行指定列名的值。

关闭ResultSet 对象的方法如下

void close();关闭ResultSet 对象,释放资源。

5.PreparedStatement:SQL语句预编译对象, 是Statement对象的子接口。除了拥有Statement对象的功能外,PreparedStatement对象还可以防止SQL注入。

PreparedStatement对象的特点:性能要高,执行SQL语句前会先编译SQL语句达到过滤掉用户输入的关键字的作用,SQL语句中的参数可以自定义。

PreparedStatement对象的常用方法如下

通过Connection对象获取PreparedStatement对象,在SQL语句中使用?代表需要设置的参数
PreparedStatement prestate = Connection.prepareStatement("select * from user where username=?");
为SQL语句设置参数,索引从1开始。注意:要根据数据库字段的类型选择不同的方法设置参数,否则可能出现异常。
prestate.setString(1, "ABC");
执行SQL语句操作
ResultSet result = prestate.executeQuery();

关闭PreparedStatement对象的方法如下

void close();关闭PreparedStatement对象,释放资源。

6.ResultSetMetaData:用于获得结果集表格基本数据的接口,是ResultSet对象的子接口。

获取ResultSetMetaData对象的方法如下

ResultSetMetaData rsmd = ResultSet.getMetaData();

ResultSetMetaData对象的常用方法如下

int getColumCount() throws SQLException;获得结果集字段的数目
String getColumName (int colum) throws SQLException;根据字段的索引值取得字段的名称
String getColumType (int colum) throws SQLException;根据字段的索引值取得字段的类型,返回值的定义在java.sql.Type类
boolean isReadOnly(int colum);获取指定字段是否为只读值
boolean isNullable(int colum);获取指定字段是否可以存储NULL
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值