【JAVA高级】——一文学会JDBC操作数据库
创始人
2024-03-30 22:50:27

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。

🍎个人主页:乐趣国学的博客

🍊个人信条:不迁怒,不贰过。小知识,大智慧。

💞当前专栏:JAVA开发者成长之路

✨特色专栏:国学周更-心性养成之路

🥭本文内容:【JAVA高级】——一文学会JDBC操作数据库

更多内容点击👇

                       JAVA进阶——解析XML技术

目录

一、JDBC含义

二、JDBC数据库连接

三、JDBC操作数据表

1、实现步骤

2、JDBC插入数据实例(增)

3、JDBC删除数据实例(删)

4、JDBC修改数据实例(改)

5、JDBC查询数据实例(查)

四、JDBC异常

SQLException方法


 

一、JDBC含义

        Java数据库连接技术(Java DataBase Connectivity),简称JDBC,能实现Java程序对各种数据库的访问。由一组使用Java语言编写的类和接口(JDBC API)组成,它们位于java.sql以及javax.sql中。换句话说:JDBC是用于在Java语言编程中与数据库连接的API。

二、JDBC数据库连接

        准备工作:

  • 具有数据库管理员权限,以在给定模式中创建数据库。 要执行以下示例,需要用实际用户名和密码替换这里用户名(username)和密码(password)。
  • MySQL或数据库已启动并运行。

        建立JDBC连接所涉及的编程相当简单。 以下是基本的四个步骤 :

  • 导入JDBC包:使用Java语言的import语句在Java代码开头位置导入所需的类。
  • 注册JDBC驱动程序:使JVM将所需的驱动程序实现加载到内存中,从而可以满足JDBC请求。
  • 数据库URL配置:创建一个正确格式化的地址,指向要连接到的数据库(如:MySQL,Oracle和MSSQL等等)。
  • 创建连接对象:最后,调用DriverManager对象的getConnection()方法来建立实际的数据库连接。

        JDBC的jar包下载链接:https://pan.baidu.com/s/16VDOM74f0uaMs5kVLhOPQA?pwd=n5xz         提取码:n5xz

        安装相应的驱动程序后,现在是时候来学习使用JDBC来操作数据库了。

三、JDBC操作数据表

1、实现步骤

            加载驱动

                Class.forName()加载驱动

            获取连接对象

                DriverManager.getConnection(URL,用户名,密码)获得数据库连接

            获取操作SQL语句的对象

                获得Statement/PreparedStatement对象

                Statement statement = connection.createStatement();

            编写SQL语句

                String sql = "sql语句;";

            执行SQL语句

                statement.executeUpdate(sql);(增删改),返回int值

                statement.executeQuery(sql);(查询),返回一个集合

            对返回的结果进行处理

                (增删改)返回的是int值,当值不为0时,说明数据(增删改)成功;

                (查询)返回的是ResultSet集合,对返回的结果进行处理,需要将集合中的数据一个一个的遍历出来, next()判断集合中是否存在数据,如果存在数据返回true,如果不存在元素返回false。

            关闭资源:先开后关,后开先关

                操作完以后要关闭jdbc来释放jdbc资源。但是顺序要和你定义对象的时候相反,就像关门一样,从里面先关,一直往外关。close();

 

2、JDBC插入数据实例(增)

使用JDBC应用程序向表中插入数据记录需要以下步骤:

  • 导入包:需要包含包含数据库编程所需的JDBC类的包。 大多数情况下,使用import java.sql.*就足够了。

  • 注册JDBC驱动程序:需要初始化驱动程序,以便可以程序中打开数据库的通信通道。

  • 打开连接:需要使用DriverManager.getConnection()方法来创建一个Connection对象,它表示与数据库服务器的物理连接。

  • 执行查询:需要使用类型为Statement的对象来构建和提交SQL语句,以在选择的数据库的表中插入数据记录。

  • 清理环境:需要明确地关闭所有数据库资源,而不依赖于JVM的垃圾收集。

    package cn.bdqn.demo01;import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;public class InsertJDBC {public static void main(String[] args) {try {// 1、注册驱动Class.forName("com.mysql.jdbc.Driver");// 2、获取连接对象String url = "jdbc:mysql://127.0.0.1:3306/java221804";String user = "root";String pwd = "123456";Connection connection = DriverManager.getConnection(url, user,pwd);// 3、获取发送SQL语句的对象Statement statement = connection.createStatement();// 编写SQL语句String sql = "INSERT INTO stu VALUES('S_1010','laoliu',29,'male');";// 4、执行SQL语句int num = statement.executeUpdate(sql);System.out.println(num);// 5、处理结果if (num == 1) {System.out.println("数据插入成功");} else {System.out.println("数据插入失败");}// 6、释放资源:先开后关,后开先关statement.close();connection.close();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}
    }

3、JDBC删除数据实例(删)

使用JDBC应用程序删除数据库中的表需要以下步骤:

  • 导入包:需要包含包含数据库编程所需的JDBC类的包。 大多数情况下,使用import java.sql.*就足够了。

  • 注册JDBC驱动程序:需要初始化驱动程序,以便可以程序中打开数据库的通信通道。

  • 打开连接:需要使用DriverManager.getConnection()方法来创建一个Connection对象,它表示与数据库服务器的物理连接。

  • 执行查询:需要使用类型为Statement的对象来构建和提交SQL语句,以在选择的数据库中删除一个表。

  • 清理环境:需要明确地关闭所有数据库资源,而不依赖于JVM的垃圾收集。

    package cn.bdqn.demo01;import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;public class DeleteJDBC {public static void main(String[] args) {try {//1、加载驱动Class.forName("com.mysql.jdbc.Driver");//这个地方Driver后面不要写.class//2、获取连接对象String url = "jdbc:mysql://127.0.0.1:3306/java221804";//127.0.0.1也可以写成localhostString user = "root";String pwd = "123456";Connection connection=DriverManager.getConnection(url, user, pwd);//3、获取操作SQL语句的对象Statement statement = connection.createStatement();//4、编写SQL语句String sql = "DELETE FROM stu WHERE sid='S_1010';";//SQL语句最好是先在SQLyog里面写一遍并运行一下,保证SQL语句没有语法错误//5、执行SQL语句int num =statement.executeUpdate(sql);//对于增加、修改、删除操作,都调用executeUpdate()方法System.out.println(num);//6、对返回的结果进行处理if(num==1){System.out.println("数据删除成功");}else{System.out.println("数据删除失败");}//7、关闭资源:先开后关,后开先关statement.close();connection.close();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}}
    

4、JDBC修改数据实例(改)

使用JDBC应用程序向表中更新数据记录需要以下步骤:

  • 导入包:需要包含包含数据库编程所需的JDBC类的包。 大多数情况下,使用import java.sql.*就足够了。

  • 注册JDBC驱动程序:需要初始化驱动程序,以便可以程序中打开数据库的通信通道。

  • 打开连接:需要使用DriverManager.getConnection()方法来创建一个Connection对象,它表示与数据库服务器的物理连接。

  • 执行查询:需要使用类型为Statement的对象来构建和提交SQL语句来更新表中的记录。在查询语句使用INWHERE子句指定更新记录的条件。

  • 清理环境:需要明确地关闭所有数据库资源,而不依赖于JVM的垃圾收集。

    package cn.bdqn.demo01;import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;public class UpdateJDBC {public static void main(String[] args) {try {//1、加载驱动Class.forName("com.mysql.jdbc.Driver");//这个地方Driver后面不要写.class//2、获取连接对象String url = "jdbc:mysql://127.0.0.1:3306/java221804";String user = "root";String pwd = "123456";Connection connection=DriverManager.getConnection(url, user, pwd);//3、获取操作SQL语句的对象Statement statement = connection.createStatement();//4、编写SQL语句String sql = "UPDATE stu SET age = 45 WHERE sid='S_1004';";//SQL语句最好是先在SQLyog里面写一遍并运行一下,保证SQL语句没有语法错误//5、执行SQL语句int num =statement.executeUpdate(sql);//对于增加、修改、删除操作,都调用executeUpdate()方法System.out.println(num);//6、对返回的结果进行处理if(num==1){System.out.println("数据修改成功");}else{System.out.println("数据修改失败");}//7、关闭资源:先开后关,后开先关statement.close();connection.close();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}
    }
    

5、JDBC查询数据实例(查)

使用JDBC应用程序向表中查询数据记录需要以下步骤:

  • 导入包:需要包含包含数据库编程所需的JDBC类的包。 大多数情况下,使用import java.sql.*就足够了。

  • 注册JDBC驱动程序:需要初始化驱动程序,以便可以程序中打开数据库的通信通道。

  • 打开连接:需要使用DriverManager.getConnection()方法来创建一个Connection对象,它表示与数据库服务器的物理连接。

  • 执行查询:需要使用类型为Statement的对象来构建和提交SQL语句,以在选择的数据库的表中查询数据记录。

  • 提取数据:执行SQL查询后,可以从表中获取记录。

  • 清理环境:需要明确地关闭所有数据库资源,而不依赖于JVM的垃圾收集。

        方法一:使用列名查询

package cn.bdqn.demo01;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class SelectJDBCByColumnName {public static void main(String[] args) {try {// 1、注册驱动Class.forName("com.mysql.jdbc.Driver");// 这个地方Driver后面不要写.class// 2、获取连接对象String url = "jdbc:mysql://127.0.0.1:3306/java221804";String user = "root";String pwd = "123456";Connection connection = DriverManager.getConnection(url, user,pwd);// 3、获取发送SQL语句的对象Statement statement = connection.createStatement();// 编写SQL语句String sql = "SELECT * FROM stu;";// 5、执行SQL语句ResultSet resultSet = statement.executeQuery(sql);// 6、对返回的结果进行处理,需要将集合中的数据一个一个的遍历出来while (resultSet.next()) {// next()判断集合中是否存在数据,如果存在数据返回true,如果不存在元素返回false// 取出元素String sid = resultSet.getString("sid");String sname = resultSet.getString("sname");int age = resultSet.getInt("age");String gender = resultSet.getString("gender");System.out.println(sid + "-" + sname + "-" + age + "-" + gender);}// 7、关闭资源:先开后关,后开先关statement.close();connection.close();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}
}

        方法二:使用索引查询 

package cn.bdqn.demo01;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;public class SelectJDBCByIndex {public static void main(String[] args) {try {// 1、注册驱动Class.forName("com.mysql.jdbc.Driver");// 2、获取连接对象String url = "jdbc:mysql://127.0.0.1:3306/java221804";String user = "root";String pwd = "123456";Connection connection = DriverManager.getConnection(url, user,pwd);// 3、获取发送SQL语句的对象Statement statement = connection.createStatement();// 编写SQL语句String sql = "SELECT * FROM stu;";// 4、执行SQL语句ResultSet resultSet = statement.executeQuery(sql);// 对于查询,调用executeQuery()方法,获得是一个集合// 5、对返回的结果进行处理,需要将集合中的数据一个一个的遍历出来// next()判断集合中是否存在数据,如果存在数据返回true,如果不存在元素返回falsewhile (resultSet.next()) {// 取出元素String sid = resultSet.getString(1);String sname = resultSet.getString(2);int age = resultSet.getInt(3);String gender = resultSet.getString(4);System.out.println(sid + "-" + sname + "-" + age + "-" + gender);}// 6、关闭资源:先开后关,后开先关statement.close();connection.close();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}
}

四、JDBC异常

        异常处理允许我们以受控的方式处理异常情况,而不是直接退出程序,例如程序定义的错误。发生异常时可以抛出异常。术语“异常”表示当前的程序执行停止,并且被重定向到最近的适用的catch子句。如果没有适用的catch子句存在,则程序的执行结束。

        JDBC异常处理与Java异常处理非常相似,但对于JDBC,要处理的最常见异常是        ​​                java.sql.SQLException

SQLException方法

        驱动程序和数据库中都会发生SQLException。 发生这种异常时,SQLException类型的对象将被传递给catch子句。

        传递的SQLException对象具有以下可用于检索有关异常信息的方法 -

方法描述
getErrorCode( )获取与异常关联的错误代码。
getMessage( )获取驱动程序处理的错误的JDBC驱动程序的错误消息,或获取数据库错误的Oracle错误代码和消息。
getSQLState( )获取XOPEN SQLstate字符串。 对于JDBC驱动程序错误,不会从此方法返回有用的信息。 对于数据库错误,返回五位数的XOPEN SQLstate代码。 此方法可以返回null
getNextException( )获取异常链中的下一个Exception对象。
printStackTrace( )打印当前异常或可抛出的异常,并将其追溯到标准错误流。
printStackTrace(PrintStream s)将此throwable及其回溯打印到指定的打印流。
printStackTrace(PrintWriter w)打印这个throwable,它是回溯到指定的打印器(PrintWriter)。

        通过利用Exception对象提供的信息,可以捕获异常并适当地继续执行程序。下面是一个try块的一般形式 -

try {// Your risky code goes between these curly braces!!!
}
catch(Exception ex) {// Your exception handling code goes between these // curly braces, similar to the exception clause // in a PL/SQL block.
}
finally {// Your must-always-be-executed code goes between these // curly braces. Like closing database connection.
}

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...