当前位置: 首页 > 后端技术 > Java

最通俗易懂的JDBC数据库教程-jdbc学习笔记

时间:2023-04-02 00:48:38 Java

本文根据B站实力派老杜的笔记整理而成,教程讲解Java语言如何连接数据库,以及对数据库中的数据进行增、删、改、查操作,适合已经学过Java编程和数据库基础的同学。Java教程讲解了接口在开发中的真正作用、JDBC规范制定的背景、JDBC编程的六个步骤、JDBC事务、JDBC批处理、SQL注入、行级锁等。1、什么是JDBC?JavaDataBaseConnectivity(Java语言连接数据库)2、JDBC的本质是什么?JDBC是Sun公司开发的一套接口(interface)java.sql.*;(这个软件包下有很多接口。)接口有调用者和实现者。面向接口调用和面向接口编写实现类都属于面向接口编程。为什么要面向接口编程?解耦:降低程序的耦合度,提高程序的可扩展性。多态机制很典型:面向抽象编程。(不针对具体编程)建议:Animala=newCat();Animala=newDog();//喂食的方法publicvoidfeed(Animala){//为父类编程。}不推荐:Dogd=newDog();猫c=新猫();思考:SUN为什么要开发一套JDBC接口?因为每个数据库的底层实现原理都不一样。Oracle数据库有自己的原则。MySQL数据库也有自己的原则。MSSqlServer数据库也有自己的原则。...每个数据库产品都有其独特的实现原理。JDBC的本质是什么?一组接口。3、准备JDBC开发,首先从官网下载对应的驱动jar包,然后配置到环境变量classpath中。classpath=.;D:\course\06-JDBC\resources\MySqlConnectorJava5.1.23\mysql-connector-java-5.1.23-bin.jar以上配置为文本编辑器开发,使用IDEA工具时使用,以上环境变量就不用配置了。IDEA有自己的配置方式。4、JDBC编程六步(需要背)第一步:注册驱动(作用:告诉Java程序要连接哪个牌子的数据库)第二步:获取连接(代表JVM之间的连接)进程和数据库进程打开通道,属于进程间通信,属于重量级,使用完通道必须关闭。)第三步:获取数据库操作对象(具体执行sql语句的对象)Step4:执行SQL语句(DQLDML...)Step5:处理查询结果集(只有当第四步执行select语句时,这第五步才处理查询结果集。)Step6:释放资源(后使用Resources后必须先关闭resources,java和数据库属于进程间通信,打开后必须关闭。)注册驱动方式二URL解析五、遍历结果集思路导入.jar包视频教程完整:https://www.bilibili.com/video/BV1Bt41137iB字符串变量(sql)单引号加双引号加两个加号++在加号中加入变量PreparedStatement(SELECT)第四步使用rs=ps.executeQuery("field");增删改查(INSERTDELETEUPDATE)第四步使用rs=ps.executeUpdate("Field");framework(select)publicstaticvoidmain(String[]args){Connectionconn=null;PreparedStatementps=null;//添加d是名词ResultSetrs=null;尝试{//1。注册驱动Class.forName("com.mysql.cj.jdbc.Driver");//2。获取连接conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/codeyuaiiao?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8","root","3615yuhaijiao");//3。获取预编译数据库操作对象Stringsql="select*fromstudent";ps=conn.prepareStatement(sql);//verb//4.执行sql语句rs=ps.executeQuery();//queryselect//rs=ps.executeUpdate();//增删改查all使用更新(插入删除更新)//5。处理查询结果set}catch(Exceptione){e.printStackTrace();}最后{//6。释放资源if(rs!=null){try{rs.close();}catch(SQLExceptione){e.printStackTrace();}}if(ps!=null){try{ps.关闭();}赶上(SQLExceptione){e。打印堆栈跟踪();}}if(conn!=null){try{rs.关闭();}catch(SQLExceptione){e.printStackTrace();}}}}三件套事务(开启commit回滚)conn.setAutoCommit(false);关闭自动提交并打开事务conn.commit();手动提交conn。回滚();在catch中写回滚if(conn!=null){try{conn.rollback();}catch(sqlExceptione1){e1.printStackTrace();}}行级锁(用于Update)悲观锁:事务结束前,事务必须排队,整行记录不允许改变,不允许并发。乐观锁:支持并发,事务不排队,需要版本号。如果一个事务发现前后版本号不一致,就会执行回滚操作,这个操作不会执行。