java桥连接数据库_JDBC:Java连接数据库的桥梁

JDBC(Java DataBase Connection),java数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时JDBC也是个商标名。

简单地说,JDBC可做三件事:

1、与数据库建立连接;

2、发送操作数据库的语句;

3、处理结果。

4668f32e21a9916a54f415750afa4341.png

JDBC开发的六个基本步骤:(以Mysql数据库为例)

1、加载Driver

2、获得数据库连接(Connection接口)

3、创建Statement(接口,传送sql命令的工具)

4、执行sql();

5、如果执行了select,处理ResultSet(接口,结果集)

6、释放资源

第一步:注册Driver,加载Driver的实现类

Class.forName(“com.mysql.jdbc.Driver”);

第二步:获得Connection

Connection connection = DriverManger.getConnection( url , username, password);

其中String url =" jdbc:mysql:localhost:8081/db01";

DriverManager是Driver的管理者,实际连接db的是Driver

第三步:创建Statement

Statement stm = conn.createStatement();

第四步:执行sql命令

返回boolean值,表示是否有ResultSet返回。true-->有false-->没有

if( resultSet.next()){    ResultSet rs = stm.getResultSet();  }

2.  executeQuery(sql) : 专门执行select(查询语句所用),返回ResultSet

3.  executeUpdate(sql) : 专门执行insert update delete(添加,删除,修改操作所用),返回一个int值,表示命令,执行后,表里受到影响的行数

第五步:处理ResultSet

1. next() : 向下一行移动指针,同时返回一个boolean,用来表明当前行是否有数据

2. get**()系列:获取当前的某一列数据。getInt(列的下标)   getString   getDate  getDouble

3. 结果集里的指针开始处于”第一行的上一行“,结束时处于”最后一行的下一行“

第六步:释放资源

按照产生对象逆序释放相关资源  rs --> stm --> conn。

下面给出查询操作和添加操作的代码(修改,删除雷同):

查询代码:

public UserBean findById(int id){

Connection connection = null;

PreparedStatement preparedStatement = null;

ResultSet resultSet = null;

try {

connection = getConnection(true);

String sql = "select id,phone,pwd from user where id=?";

preparedStatement = connection.prepareStatement(sql);

preparedStatement.setInt(1, id);

resultSet = preparedStatement.executeQuery();

if(resultSet.next()){

UserBean userBean = new UserBean();

userBean.setId(resultSet.getInt(1));

userBean.setPhone(resultSet.getString(2));

userBean.setPwd(resultSet.getString(3));

return userBean;

}

} catch (Exception e) {

e.printStackTrace();

} finally {

try {resultSet.close();} catch (SQLException e) {e.printStackTrace();}

try {preparedStatement.close();} catch (SQLException e) {e.printStackTrace();}

try {connection.close();} catch (SQLException e) {e.printStackTrace();}

}

return null;

}

添加代码:

public boolean add(UserBean userBean){

Connection connection = null;

PreparedStatement preparedStatement = null;

try {

connection = getConnection(false);

String sql = "insert into user(phone,pwd) value(?,?)";

preparedStatement = connection.prepareStatement(sql);

preparedStatement.setString(1, userBean.getPhone());

preparedStatement.setString(2, MD5Util.getMD5Str(userBean.getPwd()));

preparedStatement.executeUpdate();

connection.commit();

return true;

} catch (Exception e) {

try {connection.rollback();} catch (SQLException e1) {e1.printStackTrace();}

e.printStackTrace();

} finally {

try {preparedStatement.close();} catch (SQLException e) {e.printStackTrace();}

try {connection.close();} catch (SQLException e) {e.printStackTrace();}

}

return false;

}

其中涉及到的connection.commit();属于事件,将在之后的章节中介绍。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值