JDBC_基础

概念

JDBC是由Oracle公司提供的一个**接口**,作用是**让java操作可以操作数据库。**

JDBC实现步骤

1.导入JAR包
2.注册驱动(在mysql5.0版本之后可以不同手动注册驱动)
3.获取链接对象
4.获取执行者对象
5.执行SQL语句
6.处理结果
7.关闭资源

注册驱动(DriverManager)

	Class.forName("com.mysql.jdbc.Driver");
	//在底层其实就是一个静态代码块中调用了一个registerDriver方法,方法里面new了一个Driver
	/*
	在mysql的jar包中是提供了一个Driver类,Class.form(Driver的路径)->将类加载到内存中,通过下面这个静态方法会在字节码文件中生成一个clinit方法,静态方法会随着类加载到内存中,使调用者就可以注册驱动。在mysql版本5之后就不用手动注册驱动。
		static {
        try {
            DriverManager.registerDriver(new Driver());
        } catch (SQLException var1) {
            throw new RuntimeException("Can't register driver!");
        }
    }
	*/

connection(连接)

作用:
1.获取执行者对象

	//通过驱动给管理,获取连接对象
Connection connection=	DriverManager.getConnection()//连接对象获取执行者对象
Statement sta=connection.createStatement();//此对象存在一个SQL注入的问题,开发不会使用。
//通过连接对象获取预编译对象
PreparedStatement ps=connection.preparedStatement("SQL语句");//可以解决SQL注入的问题
2.事务管理
3.释放资源
@Test
    public void test1(){
        Connection connection = null;
        PreparedStatement ps1 = null;
        PreparedStatement ps2 = null;
        try {
            connection = DriverManager.getConnection("jdbc:mysql:///day22", "root", "root");
            //开启事务
            connection.setAutoCommit(false);
            //?代表暂位符号
            String sql1="update account set balance=balance-500 where id=?;";
            String sql2="update account set balance=balance+500 where id=?;";
            //给占位符设置参数
            ps1 = connection.prepareStatement(sql1);
            ps2 = connection.prepareStatement(sql2);
            ps1.setInt(1,1);
            ps2.setInt(1,2);
            ps1.executeUpdate();
            ps2.executeUpdate();
            //如果没有出现异常就提交事务
            connection.commit();
        } catch (SQLException throwables) {
            //如果出现异常事务回滚
            try {
                connection.rollback();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            throwables.printStackTrace();
        }finally {
            //关闭资源
            if(ps1!=null){
                try {
                    ps1.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if(ps2!=null){
                try {
                    ps2.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if(connection!=null){
                try {
                    connection.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
        }

    }

Statement(语句)

1.封装SQL语句
2.执行sql语句
		- DML(增删改):结果为int类型 
			使用executeUpte()
		- DQL(查询):结果为结果集类型
			使用executeQuery()
3.释放资源
		- void close();
4.preparStatement(SQL语句)
	设置占位符:
		setXXX(占位符位置,占位符实参);
		例如
		setInt(1,10);->表示第1个占位符,参数是10

ResultSet(结果集)

存储结构(mysql结果在java中的数据结构)
		list<map<string,object>>	map中的String就是字段名,Object就是数据。
	1.判断结果集中是否还有数据,boolean next();
		有数据返回true,并将索引向下移动一行。
		没有数据就返回false
	
	2.获取结果集中的数据:XXX getXXX("列名")
		例如:字段是int类型就是:int  getInt("列名");
	3.释放资源
		void.close();

原理图:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值