JDBC各类型的对象详解

对象详解:

  1. DriverManager:驱动管理对象
  2. Connection:数据库连接对象
  3. Statement:执行sql语句对象
  4. ResultSet:结果集对象
  5. PreparedStatement:也是执行sql语句的对象,Statement的子类。

DriverManager

功能:

  1. 注册驱动
 static void registerDriver(Driver driver):注册给定的驱动程序 DriverManager。
 写代码时使用 Class.forname("com.mysql.jdbc.Driver");
 这样写的原因为 在 com.mysql.jdbc.Driver类中存在静态代码块,在类的加载的时候就执行了该代码块中的代码:
  static {
        try {
            DriverManager.registerDriver(new Driver());
        } catch (SQLException var1) {
            throw new RuntimeException("Can't register driver!");
        }
    }
MySQL 5以后的驱动jar包可以省略注册驱动的步骤。
  1. 获取数据库连接
方法:static Connection getConnection(String url, String user, String password);
参数:	url 指定连接的路径
					语法:jdbc:mysql://ip地址:端口号/数据库名称。
					注意: 如果使用的是本机的MySQL服务器,并且端口号也是3306,则可以简写为:
					jdbc:mysql:///day09
			user:用户名
			password:密码

Connection

功能:

  1. 获取执行sql的对象
Statement createStatement()
  1. 管理事务
1.开启事务 void setAutoCommit(boolean autoCommit):调用该方法设置参数为false,即开启事务。
2.提交事务:commit()
3.回滚事务rollback()

Statement

功能:执行sql

boolean execute(String sql):可以执行任意的sql。
int executeUpdate(String sql): 执行DML语句,DDL语句。
返回值为影响的行数,可以通过影响的行数判断DML语句是否执行成功。
executeQuery:执行DQL语句(select)。

.

ResultSet

封装查询结果的对象
方法:
next(): 游标向下移动一行,判断该行是否有数据,返回值为boolean类型,有数据为true,没有数据为false。
getXXX(“参数”):获取数据。(XXX代表数据类型)。
参数:
1.int类型,代表列的编号,从1开始
2.String类型,代表列的名称。

具体代码演示:

			stmt = conn.createStatement();

            //使用statement对象来操作数据库:

            resultSet = stmt.executeQuery(sql);

            resultSet.next();

            int deptno = resultSet.getInt(1);
            String Dname = resultSet.getString(2);
            String LOC = resultSet.getString(3);


            System.out.println(deptno + "---" + Dname + "---" + LOC);

ResultSet的遍历:

  while (resultSet.next()){
               //循环判断这个游标是否在最后一行末尾,如果不是就进入while循环,如果是,就跳出该循环。
               int deptno = resultSet.getInt(1);
               String Dname = resultSet.getString(2);
               String LOC = resultSet.getString(3);
               System.out.println(deptno + "---" + Dname + "---" + LOC);
           }

PreparedStatement

预先创建的sql语句,可以有效的防止sql注入产生的安全问题。
和Statement不同的地方在于,PreparedStatement传入的sql语句,需要拼接的地方使用?来作为占位符,通过set方法来为占位符赋值。

sql语句的定义:

String sql1 = "update account set  balance = balance - ? where id = ?";
String sql2 = "update account set  balance = balance + ? where id = ?";

具体实现:

package com.ujiuye.CRUD;

import com.ujiuye.CRUD.JDBCUtil.JDBCUtil;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Test08 {
    public static void main(String[] args) {
        Connection con = null;
        PreparedStatement pre1 = null;
        PreparedStatement pre2 = null;

        //1.获取连接

        try {
            con = JDBCUtil.getConnection();
            String sql1 = "update account set  balance = balance - ? where id = ?";
            String sql2 = "update account set  balance = balance + ? where id = ?";

            con.setAutoCommit(false);

            //传入sql语句
            pre1 = con.prepareStatement(sql1);
            pre2 = con.prepareStatement(sql2);

            //为需要添加的地方设置值,有两个参数,第一个参数为问号的位置,第二个参数为问号的值。
            pre1.setInt(1,500);
            pre1.setInt(2,1);

            pre2.setInt(1,500);
            pre2.setInt(2,2);


            pre1.executeUpdate();
            pre2.executeUpdate();

            con.commit();

        } catch (Exception e) {
            try {
                if (con != null)con.rollback();
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
            e.printStackTrace();
        }finally {
            JDBCUtil.close(pre1,con);
            JDBCUtil.close(pre2,null);
        }

    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值