1、JDBC是什么?

JDBC,英文全称:Java DataBase Connectivity,中文全称:java数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,由一组用Java语言编写的类和接口组成。


2、JDBC能做什么?

简单来说,JDBC 可做三件事:与数据库建立连接、发送和执行操作数据库的语句、处理SQL语句执行结果。


3、Java连接数据库的步骤

(1)加载驱动类

Oracle数据库的驱动类名称为:oracleDriverName = oracle.jdbc.driver.OracleDriver

MySQL数据库的驱动类名称为:mysqlDriverName = com.mysql.jdbc.Driver

//加载驱动类,也可以叫做注册载入驱动
Class.forName(DriverName); //DriverName为驱动类的名称,具体应用时要替换成具体数据库的驱动类名称//加载MySQL驱动类
Class.forName("com.mysql.jdbc.Driver");//加载Oracle驱动类
Class.forName("oracle.jdbc.driver.OracleDriver");

(2)创建连接对象

获取连接对象时的三个参数:url、username、password

Oracle数据库:

url = jdbc:oracle:thin:@oracleip:port:dbname  (其中oracleip为Oracle数据库所在电脑的ip地址,port为Oracle数据库的端口号默认端口号为1521,dbname 为所使用的数据库名称)

username = scott (用户名称,默认的是Scott,实际应用时,具体名称,具体设置)

password为使用数据库时的密码;

MySQL数据库:

url = jdbc:mysql://mysqlip:port/dbname  (其中mysqlip为mysql数据库所在电脑的ip地址,如果mysql数据库安装在主机中,则mysqlip可以写成localhost,post为mysql数据库的端口号,默认端口号为3306,dbname为数据库的名称)

username = root

password为使用数据库时的密码;

//例如如下语句://创建连接对象
Connection conn =DriverManager.getConnection(url ,username , password ) ;   //创建和MySQL数据库连接的对象
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname", "root","123456");

在这里可以写个方法对以上两个步骤进行测试: 

package sql; //类所在的包//需要导入的包
import java.sql.Connection;
import java.sql.DriverManager;public class DbTest {public static void main(String[] args) {//获取mysql数据库连接步骤//第一步:加载驱动类Class.forName("com.mysql.jdbc.Driver");//第二步:创建连接对象Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/zxdb","root","123456");//控制台输出数据库连接对象System.out.println(conn);}
}//注意,本段代码为原始代码,里面有异常未处理,请继续向下阅读

未对异常进行处理的原始代码

观察两种异常的类型:

注意两种异常类型的不同

对原始代码进行异常处理:

package sql; //类所在的包//需要导入的包
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;public class DbTest {public static void main(String[] args) {//获取mysql数据库连接步骤//第一步:加载驱动类try {Class.forName("com.mysql.jdbc.Driver");} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}//第二步:创建连接对象Connection conn = null;try {conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/zxdb","root","123456");} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}//控制台输出数据库连接对象System.out.println(conn);}
}

程序运行结果

处理异常:是为了提高代码的健壮性,当程序运行发生异常并被捕获时,根据捕获异常时得到的异常信息,就可以很快定位到出现异常的代码位置。

将驱动类的名称故意写错,观察错误信息:

将驱动类的名字写错,观察异常信息内容

将驱动类和URL写错,观察错误信息

也可以将获取数据库连接对象用方法(函数)的形式来写,当需要获取数据库连接对象时,直接调用方法(函数)即可,不用每次都写获取数据库连接对象的全部代码。

package sql; //类所在的包//需要导入的包
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;public class DbTest {/*** 函数功能:获取数据库连接对象* @return 返回一个数据库连接对象*/public static Connection getConn(){//第一步:加载驱动类try {Class.forName("com.mysql.jdbc.Driver");} catch (ClassNotFoundException e) {System.out.println("驱动类加载失败");e.printStackTrace();//打印详细的异常信息内容}//第二步:创建连接对象Connection conn = null;try {                                   conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/zxdb","root","123456");} catch (SQLException e) {System.out.println("获取连接对象时出错");e.printStackTrace();//在控制台输出具体的异常信息内容}return conn;}public static void main(String[] args) {Connection conn = getConn();  //调用获取数据库连接对象的函数System.out.println(conn);   //控制台输出数据库连接对象}
}

用方法(函数)来获取数据库连接对象

(3)创建执行SQL语句的对象

使用数据库连接对象,调用createStatement()方法,创建一个执行SQL语句的对象,即Statement对象;

// 创建执行SQL语句的对象
Statement st = conn.createStatement();

(4)执行SQL语句

executeQuery(String sql)方法:只能执行查询语句,返回一个结果集对象;

executeUpdate(String sql)方法:可执行增、删、改语句及DDL语句,返回执行语句受到影响的记录条数(返回结果为int类型);

//执行查询语句
ResultSet rs = st.executeQuery(sql);//执行增删改语句和DDL语句
int cnt = st.executeUpdate(sql);

(5)关闭资源

关闭资源的顺序和创建资源的顺序相反,称为“倒关闭”

rs.close(); //关闭结果集对象
st.close();  //关闭执行SQL语句的对象
conn.close();  //关闭连接对象

为了较少报错的几率,最好使用try...catch...判断处理错误;

try {if (rs != null) {rs.close();}
} catch (SQLException e) {e.printStackTrace();} finally {try {if (st != null) {st.close();}} catch (SQLException e) {e.printStackTrace();} finally {try {if (conn != null) {conn.close();}} catch (SQLException e) {e.printStackTrace();}}
}

实例请查看:JDBC操作数据库实例

Java连接数据库 JDBC相关推荐

  1. Java连接数据库JDBC

    1.数据库驱动和JDBC JDBC SUN公司为了简化开发人员的((对数据库的统一)操作,提供了一个(Java操作数据库的规范,俗称JDBC)这些规范的实现由具体的厂商去做 对于开发人员来说,我们只需 ...

  2. Java连接数据库(JDBC非常重要)

    目录 一.数据库连接 1.1之前如何操作数据库 1.2.实际开发中如何操作数据库? 二.JDBC(Java Database Connectinity)(重要) 2.1.JDBC的概念 2.2 JDB ...

  3. java连接数据库,jdbc四要素,jdbc六大步

    1.先确保项目中已经有了jdbc的jar包(ojdbc.jar),没有可以去网上找然后添加到项目 2.jdbc 的四要素 //jdbc四要素//驱动:决定连接的是何种类型的数据库private sta ...

  4. java连接数据库--JDBC

    //驱动程序名 String driver =("com.mysql.jdbc.Driver");// "com.MySQL.jdbc.Driver"; //U ...

  5. Java中JDBC连接数据库详解

    今天动力节点java学院小编分享的是JDBC连接数据库的相关知识,希望通过看过此文,各位小伙伴对DBC连接数据库有所了解,下面就跟随小编一起来看看JDBC连接数据库的知识吧. 一.JDBC连接数据库概 ...

  6. JAVA通过JDBC连接并操作MySQL数据库

    JAVA通过JDBC连接并操作MySQL数据库 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提 ...

  7. Java使用Jdbc操作MySql数据库(一)

    这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...

  8. Java连接数据库(4)

    环境:netbeans (四)Java通过Jdbc连接MySql数据库 MySql数据库相对postgresql来说常见一些,它们的连接方法极其类似.MySql中的操作就不叙述了,读者自己在MySql ...

  9. 一篇文章教你学会Java基础JDBC

    文章目录 一.搭建JDBC开发环境 1.搭建工程 2.连接数据库工具类JdbcConnectionUtil 3.main方法测试 二.创建Statement或PreparedStatement接口,执 ...

最新文章

  1. 【干货书】Pytorch创建和部署深度学习应用
  2. JavaScript中为什么string可以拥有方法?
  3. ABAP--一个不错的函数模块的文档生成程序
  4. 有理有据!为什么String选择数字31作为hashCode方法乘子?
  5. 20220203--CTF刷题WEB方向-- PHP2--考察URL编码解码和修改php后缀为phps
  6. [HEOI2013] SAO(dp + 组合数 + 前缀和)
  7. 数字货币交易所_数字货币交易所开发运营的盈利模式
  8. ES6之let能替代var吗?
  9. 江苏省政府投资基金集聚区落地,基金目标规模再增1500亿
  10. 常用的几款抓包工具_ 常见的4种抓包工具比较
  11. python手机端抢票大麦网_手把手教你用python抢票回家过年 !
  12. 2022icpc昆明打铁记录
  13. 折弯公差尺寸及工艺要求
  14. 初学者-CSS思维导图(上)
  15. 非常全的 matlab 函数
  16. JavaScript中splice的用法
  17. 《测试驱动开发应用实践》讨论记录
  18. LeetCode376 摇摆序列
  19. 反幂法matlab程序,数值分析幂法和反幂法.doc
  20. 2022年Q2全国网络零售发展指数同比增长3.3%

热门文章

  1. Leetcode 391.完美矩形
  2. win10安装docker并结合Idea2018.1部署springboot项目
  3. ●洛谷P3688 [ZJOI2017]树状数组
  4. 对学习编译原理的看法
  5. MySQL 的“root”用户修改密码
  6. myeclipse 遇到的一些问题及解决方案
  7. 交换两个变量的值不使用第三个变量(Java)
  8. va_start() va_end()函数应用
  9. 【Smart_Point】C/C++ 中智能指针
  10. Linux环境编程--进程通信