JDBC快速入门:从环境搭建到代码编写,轻松实现数据库增删改查操作!

YDYXCODE · · 896 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
通过上篇文章我们已经对JDBC的基本概念和工作原理都有了一定的了解,本篇文章我们继续来探索如何从零开始,一步步搭建开发环境,编写代码,最后实现数据库的增删改查操作。 ## 一、开发环境搭建 首先,我们需要准备的开发环境有:Java开发工具包(JDK)、数据库(如MySQL)、数据库驱动(如MySQL Connector/J)。 #### 安装JDK: 你可以从Oracle官网下载适合你操作系统的JDK版本,按照提示进行安装即可。相信这个大家早已经安装过了,在这里就不再多说了。 #### 安装数据库: 同样在官网下载MySQL安装包,按照提示进行安装。安装完成后,需要创建一个数据库和表,用于后续的测试。 #### 下载数据库驱动: 在MySQL官网下载对应版本的MySQL Connector/J,将其解压后的jar文件添加到你的项目类路径中。 具体的操作如下: 1、创建一个普通的空项目 ![image.png](http://static.itsharecircle.com/231226/ed832b4ab8445f8bc7ea578807bf11c1.png) 填写上项目名称与路径 ![image.png](http://static.itsharecircle.com/231226/fa428982cdb744d785031cbc7032151e.png) 2、配置JDK版本 ![image.png](http://static.itsharecircle.com/231226/644ec5c326703e1eaa7a57455d9ea0da.png) 3、创建一个子模块(jdbc快速入门的程序在这里面写) ![image.png](http://static.itsharecircle.com/231226/57a6f79e9da6d0ca358e4e5729cbd973.png) 这里填写上子模块名称 ![image.png](http://static.itsharecircle.com/231226/1fd6d2ba2ccac155e7d999c9bd372587.png) 然后下一步,点击ok,这个子模块就创建完成了 ![image.png](http://static.itsharecircle.com/231226/9d63ee0f2d2200385aee702b9b6a9ae8.png) 4、导入jar包 ![image.png](http://static.itsharecircle.com/231226/37b22e6c71622e985ca3da190476091a.png) ![image.png](http://static.itsharecircle.com/231226/e61f33e88b4861ee79caf652bdbbcafa.png) ## 二、使用JDBC访问数据库 JDBC操作数据库步骤如下: - 注册驱动 - 获取数据库连接对象 (Connection) - 定义SQL语句 - 获取执行SQL的对象 (Statement) - 执行SQL - 处理集并返回结果(ResultSet) - 释放资源 下面通过代码来了解一下JDBC代码的编写步骤与操作流程。 #### 1、创建数据库和表: ``` CREATE DATABASE `jdbc_test` DEFAULT CHARSET utf8mb4; CREATE TABLE `account`( `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'ID', `name` varchar(20) NOT NULL COMMENT '姓名', `salary` int(11) COMMENT '薪资', ); ``` #### 2、编写Java程序: ``` package com.baidou.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class JDBCDemo { public static void main(String[] args) throws Exception { // 1、注册驱动 Class.forName("com.mysql.jdbc.Driver"); // 2、获取连接 String url ="jdbc:mysql://127.0.0.1:3306/jdbc_test?useSSL=false"; String user = "root"; String password = "123456"; Connection conn = DriverManager.getConnection(url, user, password); // 3、定义sql语句 String sql = "insert into account(name,salary) values('王强',10000)"; // 4、获取执行sql的对象 Statement Statement stmt = conn.createStatement(); // 5、执行sql int count = stmt.executeUpdate(sql); // 6、处理结果 // 打印受影响的行数 System.out.println(count); System.out.println(count>0?"插入成功":"插入失败"); // 7、释放资源 stmt.close(); conn.close(); } } ``` 控制输出结果如下: ![image.png](http://static.itsharecircle.com/231226/ad4349ca978fc4555dc96aa29dec3bc4.png) 表中的数据: ![image.png](http://static.itsharecircle.com/231226/c57d61d1b93909feb595a5adf9ac5bf1.png) ## 三、JDBC-API详解 JDBC API是Java语言访问数据库的标准API,它定义了一组类和接口,用于封装数据库访问的细节。主要包括以下几类: #### 1、DriverManager驱动管理对象 (1)注册驱动: 注册给定的驱动程序:staticvoid registerDriver(Driver driver);在com.mysql.jdbc.Driver类中存在静态代码块; 写代码有固定写法:Class.forName(“com.mysql.jdbc.Driver”); (2)获取数据库连接对象 具体实现是通过:DriverManager.getConnection(url,username,password); #### 2、Connection数据库连接对象 (1)创建sql执行对象 ``` conn.createStatement(); ``` (2)可以执行事务的提交,回滚操作 ``` conn.rollback();conn.setAutoCommit(false); ``` #### 3、Statement执行sql语句的对象 用于向数据库发送要执行的sql语句(增删改查),其中有两个重要方法: - executeUpdate(String sql) - executeQuery(String sql) 前者用于DML操作,后者用于DQL操作。 #### 4、ResultSet结果集对象 - 打印输出时判断结果集是否为空,rs.next() - 若知字段类型可使用指定类型如,rs.getInt()获取数据 >你还在苦恼找不到真正免费的编程学习平台吗?可以试试云端源想!课程视频、在线书籍、在线编程、实验场景模拟、一对一咨询……你想要的全部学习资源这里都有,重点是统统免费![点这里即可查看](https://ydcode.cn/memberIndex?sourceId=529) ## 四、提取工具类并完成增删改查操作 在上面介绍了可以通过JDBC对数据库进行增删改查操作,但是如果每次对数据库操作一次都要重新加载一次驱动,建立连接等重复性操作的话,会造成代码的冗余。 因此下面通过封装一个工具类来实现对数据库的增删改查操作。 #### 1、建立配置文件db.properties文件 properties文件是Java支持的一种配置文件类型(所谓支持是因为Java提供了properties类,来读取properties文件中的信息)。记得一定要将此文件直接放在src目录下!!!不然后面执行可能找不到此配置文件!! ``` driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true username=root password=lcl403020 ``` #### 2、建立工具类JdbcUtils.java 有了这个工具类,之后的增删改查操作可直接导入这个工具类完成获取连接,释放资源的操作,很方便,接着往下看。 ``` package jdbcFirstDemo.src.lesson02.utils; import java.io.IOException; import java.io.InputStream; import java.sql.*; import java.util.Properties; public class JdbcUtils { private static String driver=null; private static String url=null; private static String username=null; private static String password=null; static { try{ InputStream in=JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties"); Properties properties=new Properties(); properties.load(in); driver=properties.getProperty("driver"); url=properties.getProperty("url"); username=properties.getProperty("username"); password=properties.getProperty("password"); //驱动只需要加载一次 Class.forName(driver); } catch (IOException e) { throw new RuntimeException(e); } catch (ClassNotFoundException e) { throw new RuntimeException(e); } } //获取连接 public static Connection getConnection() throws SQLException { return DriverManager.getConnection(url,username,password); } //释放连接资源 public static void release(Connection conn, Statement st, ResultSet rs) { if(rs!=null){ try{ rs.close(); } catch (SQLException e) { throw new RuntimeException(e); } } if(st!=null){ try { st.close(); } catch (SQLException e) { throw new RuntimeException(e); } } if(conn!=null){ try { conn.close(); } catch (SQLException e) { throw new RuntimeException(e); } } } } ``` #### 3、 插入数据(DML) ``` package jdbcFirstDemo.src.lesson02; import jdbcFirstDemo.src.lesson02.utils.JdbcUtils; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class TestInsert { public static void main(String[] args) { Connection conn=null; Statement st=null; ResultSet rs=null; try{ conn= JdbcUtils.getConnection(); st=conn.createStatement(); String sql="insert into users (id, name, password, email, birthday) VALUES (7,'cll',406020,'30812290','2002-03-03 10:00:00')"; int i=st.executeUpdate(sql); if(i>0){ System.out.println("插入成功!"); } } catch (SQLException e) { throw new RuntimeException(e); } finally { JdbcUtils.release(conn,st,rs); } } } ``` 运行结果: ![image.png](http://static.itsharecircle.com/231226/c61997420a0ed48b7d1ac06595c4f79a.png) #### 4、修改数据(DML) ``` package jdbcFirstDemo.src.lesson02; import jdbcFirstDemo.src.lesson02.utils.JdbcUtils; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class TestUpdate { public static void main(String[] args) { Connection conn=null; Statement st=null; ResultSet rs=null; try{ conn= JdbcUtils.getConnection(); st=conn.createStatement(); String sql="update users set name='haha' where id=2"; int i=st.executeUpdate(sql); if(i>0){ System.out.println("修改成功!"); } } catch (SQLException e) { throw new RuntimeException(e); } finally { JdbcUtils.release(conn,st,rs); } } } ``` 运行结果: ![image.png](http://static.itsharecircle.com/231226/181b7e9ae462f6323276c55766cbac79.png) #### 5、 删除数据(DML) ``` package jdbcFirstDemo.src.lesson02; import jdbcFirstDemo.src.lesson02.utils.JdbcUtils; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class TestDelete { public static void main(String[] args) { Connection conn=null; Statement st=null; ResultSet rs=null; try{ conn= JdbcUtils.getConnection(); st=conn.createStatement(); String sql="delete from users where id=1"; int i=st.executeUpdate(sql); if(i>0){ System.out.println("删除成功!"); } } catch (SQLException e) { throw new RuntimeException(e); } finally { JdbcUtils.release(conn,st,rs); } } } ``` 运行结果:删除掉了id=1的那一条数据 ![image.png](http://static.itsharecircle.com/231226/5634a03677f98f28cfc7b6b97ab663c9.png) #### 6、 查询数据(DQL) ``` package jdbcFirstDemo.src.lesson02; import jdbcFirstDemo.src.lesson02.utils.JdbcUtils; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class TestQuery { public static void main(String[] args) throws SQLException { Connection conn=null; Statement st=null; ResultSet rs=null; conn= JdbcUtils.getConnection(); st=conn.createStatement(); //sql String sql="select * from users"; rs=st.executeQuery(sql); while (rs.next()){ System.out.println(rs.getString("name")); } } } ``` 运行结果: ![image.png](http://static.itsharecircle.com/231226/5634a03677f98f28cfc7b6b97ab663c9.png) 本文从开发环境搭建到代码编写步骤以及JDBC API做了详细的讲解,最后通过封装一个工具类来实现对数据库的增删改查操作,希望能够帮助你快速入门JDBC,关于数据库连接池部分,我们下期接着讲,敬请期待哦!
896 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传