什么是JDBC

JDBC全称为:Java Data Base Connectivity,它是可以执行SQL语句的Java API

为什么我们要用JDBC

  • 市面上有非常多的数据库,本来我们是需要根据不同的数据库学习不同的API,sun公司为了简化这个操作,定义了JDBC API【接口】
  • sun公司只是提供了JDBC API【接口】,数据库厂商负责实现。
  • 对于我们来说,操作数据库都是在JDBC API【接口】上,使用不同的数据库,只要用数据库厂商提供的数据库驱动程序即可
  • 这大大简化了我们的学习成本

简单操作JDBC

步骤:

  1. 导入MySQL或者Oracle驱动包
  2. 装载数据库驱动程序
  3. 获取到与数据库连接
  4. 获取可以执行SQL语句的对象
  5. 执行SQL语句
  6. 关闭连接
Connection connection = null;Statement statement = null;ResultSet resultSet = null;try {/** 加载驱动有两种方式** 1:会导致驱动会注册两次,过度依赖于mysql的api,脱离的mysql的开发包,程序则无法编译* 2:驱动只会加载一次,不需要依赖具体的驱动,灵活性高** 我们一般都是使用第二种方式* *///1.//DriverManager.registerDriver(new com.mysql.jdbc.Driver());//2.Class.forName("com.mysql.jdbc.Driver");//获取与数据库连接的对象-Connetcionconnection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zhongfucheng", "root", "root");//获取执行sql语句的statement对象statement = connection.createStatement();//执行sql语句,拿到结果集resultSet = statement.executeQuery("SELECT * FROM users");//遍历结果集,得到数据while (resultSet.next()) {System.out.println(resultSet.getString(1));System.out.println(resultSet.getString(2));}} catch (SQLException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();} finally {/** 关闭资源,后调用的先关闭** 关闭之前,要判断对象是否存在* */if (resultSet != null) {try {resultSet.close();} catch (SQLException e) {e.printStackTrace();}}if (statement != null) {try {statement.close();} catch (SQLException e) {e.printStackTrace();}}if (connection != null) {try {connection.close();} catch (SQLException e) {e.printStackTrace();}}}

上面我们已经简单使用JDBC去查询数据库的数据了,接下来我们去了解一下上面代码用到的对象


Connection对象

客户端与数据库所有的交互都是通过Connection来完成的。

常用的方法:


//创建向数据库发送sql的statement对象。createcreateStatement()//创建向数据库发送预编译sql的PrepareSatement对象。prepareStatement(sql) //创建执行存储过程的callableStatement对象prepareCall(sql)//设置事务自动提交setAutoCommit(boolean autoCommit)//提交事务commit()//回滚事务rollback()

Statement对象

Statement对象用于向数据库发送Sql语句,对数据库的增删改查都可以通过此对象发送sql语句完成。

Statement对象的常用方法:


//查询executeQuery(String sql)//增删改executeUpdate(String sql)//任意sql语句都可以,但是目标不明确,很少用execute(String sql)//把多条的sql语句放进同一个批处理中addBatch(String sql)//向数据库发送一批sql语句执行executeBatch()

ResultSet对象

ResultSet对象代表Sql语句的执行结果,当Statement对象执行executeQuery()时,会返回一个ResultSet对象

ResultSet对象维护了一个数据行的游标【简单理解成指针】,调用ResultSet.next()方法,可以让游标指向具体的数据行,进行获取该行的数据

常用方法:


//获取任意类型的数据getObject(String columnName)//获取指定类型的数据【各种类型,查看API】getString(String columnName)//对结果集进行滚动查看的方法next()Previous()absolute(int row)beforeFirst()afterLast()

写一个简单工具类

通过上面的理解,我们已经能够使用JDBC对数据库的数据进行增删改查了,我们发现,无论增删改查都需要连接数据库,关闭资源,所以我们把连接数据库,释放资源的操作抽取到一个工具类

/** 连接数据库的driver,url,username,password通过配置文件来配置,可以增加灵活性* 当我们需要切换数据库的时候,只需要在配置文件中改以上的信息即可** */private static String  driver = null;private static String  url = null;private static String  username = null;private static String password = null;static {try {//获取配置文件的读入流InputStream inputStream = UtilsDemo.class.getClassLoader().getResourceAsStream("db.properties");Properties properties = new Properties();properties.load(inputStream);//获取配置文件的信息driver = properties.getProperty("driver");url = properties.getProperty("url");username = properties.getProperty("username");password = properties.getProperty("password");//加载驱动类Class.forName(driver);} catch (IOException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();}}public static Connection getConnection() throws SQLException {return DriverManager.getConnection(url,username,password);}public static void release(Connection connection, Statement statement, ResultSet resultSet) {if (resultSet != null) {try {resultSet.close();} catch (SQLException e) {e.printStackTrace();}}if (statement != null) {try {statement.close();} catch (SQLException e) {e.printStackTrace();}}if (connection != null) {try {connection.close();} catch (SQLException e) {e.printStackTrace();}}}

如果文章有错的地方欢迎指正,大家互相交流。习惯在微信看技术文章的同学,可以关注微信公众号:Java3y

更多专业前端知识,请上 【猿2048】www.mk2048.com

JDBC【介绍JDBC、使用JDBC连接数据库、简单的工具类】相关推荐

  1. JDBC批量增加批量修改增删改查工具类

    JDBC工具类 package com.belle.infrastructure.util;import java.sql.Connection; import java.sql.PreparedSt ...

  2. JDBC基础篇(MYSQL)——自定义JDBCUtil工具类

    package util;import java.io.File; import java.io.InputStream; import java.sql.Connection; import jav ...

  3. uniapp APP 端 WebSocket 使用,实现一个简单 WebSocket 工具类

    背景 最近有需求要做一个简单业务的 APP 应用,简单考虑选用 uniapp + uview + vue2.x 方案,因为还有web端页面也需要用到 WebSocket ,简单封装了一个适应 web ...

  4. struts+hibernate+oracle+easyui实现lazyout组件的简单案例——工具类

    次此篇文章是两个工具类的实现,HibernateUtil.java和分页的工具类PageUtil.java的实现: 先看看HibernateUtil.java的实现: package org.util ...

  5. 基于ansj_seg和nlp-lang的简单nlp工具类

    1.首先在pom中引入ansj_seg和nlp-lang的依赖包, ansj_seg包的作用: 这是一个基于n-Gram+CRF+HMM的中文分词的java实现: 分词速度达到每秒钟大约200万字左右 ...

  6. java dateutils_Java中简单日期工具类DateUtils的实现

    最近工作时经常处理日期,想起以前sql server中datediff,dateadd 等方法非常好用,于是想在java中实现类以的功能,而且提高精度,所以初步有了以下代码: package com. ...

  7. java druid jdbc例子_JDBC【使用Druid连接数据库,DBUtils工具类的使用】

    Druid连接数据库,DBUtils工具类的使用 1.在maven中添加Druid依赖 com.alibaba druid 1.2.0 2.封装Druid连接方法 import com.alibaba ...

  8. jdbc连接mysql工具类_jdbc之工具类DBUtil的使用

    首先回顾一下jdbc的使用方法: 1. 注册驱动 2. 建立连接 3. 建立statement 4. 定义sql语句 5. 执行sql语句,如果执行的是查询需遍历结果集 6. 关闭连接 其中建立连接和 ...

  9. JDBC(本质,配置环境变量,JDBC编程六步,类加载注册,sql注入,事务问题,封装工具类,悲观锁,乐观锁)

    JDBC 2021.5.21 依然跟着动力节点杜老师学!!! 1.什么是JDBC? Java DataBase Connectivity 在java语言中编写sql语句,对mysql数据库中的数据进行 ...

最新文章

  1. P1339 热浪 最短路径模板题
  2. 没有人能够解释为什么飞机可以待在空中
  3. Jenkins: 执行 PowerShell 命令
  4. Centos 中 TCPWrappers访问控制
  5. jQuery-给ul添加了li之后,添加的li并没有绑定点击监听怎么办?
  6. 一道题,最小操作次数使数组元素相等引发的思考
  7. 每天九点十分开始每半小时一次执行一个cron_每天通勤4小时!西咸双城生活的上班族,不简单...
  8. python3语法都相同吗_python3.4学习笔记(一) 基本语法 python3不向下兼容,有些语法跟python2.x不一样...
  9. OpenPBS 脚本
  10. jquery +ajax 上传加预览
  11. c 语言输出字符用什么作用是什么,C语言中输出字符串用什么符号
  12. AD域服务器中批量创建帐户
  13. GridView 样式
  14. 如何解决应用程序无法启动,因为应用程序的并行配置不正确问题
  15. 在小鸟云新春采购节买到划算的云服务器
  16. arm汇编语言中bne 1b的意思
  17. Dubbo面试题总结
  18. php laravel 忘记密码,Laravel实现找回密码及密码重置,详细操作
  19. 阿里插件机制android,Android插件 - 阿里規約 Alibaba Java Coding Guidelines
  20. 移动通信中m序列的Matlab仿真

热门文章

  1. 【2021.01.01】人生中很重要的一个十年,差强人意
  2. 嵌套套娃,MySQL子查询,单行与多行子查询,相关和不相关(关联)子查询,完整详细可收藏
  3. 请简述gouraud光照模型_《计算机图形学》试卷及答案
  4. Vue页面骨架屏(一)
  5. 今天在看慕课网的java学习路径
  6. Android开发——Android系统启动以及APK安装、启动过程
  7. 又见链表 --- 另一种Creat方式与反转
  8. DotNetOpenAuth实践之搭建验证服务器
  9. __construct()和__initialize()
  10. 【原创】jpgraph中文乱码问题的解决