JDBC实现数据库的增删改查

简介:

本文主要讲解: 

  1. JDBC的概念

  2. JDBC的原理

  3. 创建用于测试的数据库

  4. 使用JDBC操作数据库

  5. 思考与分析


  1. 关于JDBC

JDBCJava DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java APIJDBCJava访问数据库的标准规范,可以为不同的关系型数据库提供统一访问,它由一组用Java语言编写的接口和类组成。

2.JDBC原理:

JDBC说白了就是一套AIP接口,一套规范.然后各大数据库的驱动都实现并遵守了这套接口.


  3.准备数据库:


mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| test              |

+--------------------+

4 rows in set (0.00 sec)

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
mysql>  create  database  xinsz08;
  
mysql> use xinsz08;
Database  changed
mysql>  create  table  category(
    -> cid  int  primary  key  auto_increment,
    -> cname  varchar (100)
    -> );
Query OK, 0  rows  affected (0.36 sec)
  
mysql>
mysql>  set  names gbk;
Query OK, 0  rows  affected (0.27 sec)
  
mysql>  INSERT  INTO  category (cname) VALUES ( '家电' );
Query OK, 1 row affected (0.08 sec)
  
mysql>  INSERT  INTO  category (cname) VALUES ( '服饰' );
Query OK, 1 row affected (0.03 sec)
  
mysql>  INSERT  INTO  category (cname) VALUES ( '化妆品' );
Query OK, 1 row affected (0.03 sec)
  
mysql>  select  from  category;
+ -----+--------+
| cid | cname  |
+ -----+--------+
|   1| 家电      |
|   2| 服饰       |
|   3| 化妆品     |
+ -----+--------+
rows  in  set  (0.00 sec)

 

     导入驱动包

创建lib目录,用于存放当前项目需要的所有jar包

选择jar包,右键执行build path / Add to Build Path


 

4.使用JDBC实现数据库增删改查的步骤:

  • 注册驱动

  • 获得连接

  • 获得执行sql语句的对象

  • 执行SQL语句,并返回结果

  • 处理结果

  • 释放资源

 

 

代码示例1:

使用JDBC插入数据到数据库:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package  cn.xinsz.boke01;
import  java.sql.Connection;
import  java.sql.DriverManager;
import  java.sql.Statement;
publicclass demo1 {
     publicstaticvoid main(String[] args)  throws  Exception {
        Class.forName( "com.mysql.jdbc.Driver" );
        String url =  "jdbc:mysql://localhost:3306/xinsz08" ;
        String user= "root" ;
        String password= "root" ;
        Connection conn = DriverManager.getConnection(url,user,password);
        
        Statement stat = conn.createStatement();
        String sql= "insert into category (cname)values('玩具')" ;
        introw=stat.executeUpdate(sql);
        System.out.println(row);
        stat.close();
        conn.close();
     }
  
}

 

mysql> select * from category;

+-----+--------+

| cid | cname  |

+-----+--------+

|   1| 家电      |

|   2| 服饰       |

|   3| 化妆品     |

|   4| 玩具       |

|

+-----+--------+

6 rows in set (0.00 sec)

 可以看到插入了一行数据,第4条.


 

使用JDBC对数据进行查看和删除

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package  cn.xinsz.boke01;
import  java.sql.Connection;
import  java.sql.DriverManager;
import  java.sql.ResultSet;
import  java.sql.SQLException;
import  java.sql.Statement;
  
publicclass demo1 {
     publicstaticvoid main(String[] args)  throws  Exception {
        Class.forName( "com.mysql.jdbc.Driver" );
        String url =  "jdbc:mysql://localhost:3306/xinsz08" ;
        String user =  "root" ;
        String password =  "root" ;
        Connection conn = DriverManager.getConnection(url, user, password);
  
        Statement stat = conn.createStatement();
        select(stat); //查询数据
        delete(stat);
        stat.close();
        conn.close();
     }
  
     privatestaticvoid delete(Statement stat)  throws  Exception {
        String sql=  "delete from  category where cid=5" ;
        introw = stat.executeUpdate(sql);
        if (row> 0 ){
            System.out.println( "执行成功" );
        } else {
            System.out.println( "执行失败" );
        }             
        
     }
  
     privatestaticvoid select(Statement stat)  throws  Exception {
        String sql =  "select * from category" ;
        ResultSet rs = stat.executeQuery(sql);
        while  (rs.next()) {
  
            System.out.println(rs.getString( "cid" ) + rs.getString( "cname" ));
  
        }
        rs.close();
  
     }
  
}

代码分析:

使用JDBC时,最常打交道的是Connection、PreparedStatement这两个类,以及select中的ResultSet类。

Connection

java.sql 
接口 Connection


public interface Connectionextends Wrapper

 

与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结果。

Connection 对象的数据库能够提供描述其表、所支持的 SQL 语法、存储过程、此连接功能等等的信息。此信息是使用 getMetaData 方法获得的。

 

  PreparedStatemnt

java.sql 
接口 PreparedStatement


public interface PreparedStatementextends Statement

表示预编译的 SQL 语句的对象。

SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用此对象多次高效地执行该语句。

 

常用方法

 boolean  execute()

          在此 PreparedStatement 对象中执行 SQL 语句,该语句可以是任何种类的 SQL 语句。

 ResultSet  executeQuery()

          在此 PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。

 int  executeUpdate()

          在此 PreparedStatement 对象中执行 SQL 语句,该语句必须是一个 SQL 数据操作语言(Data Manipulation Language,DML)语句,比如 INSERT、UPDATE 或 DELETE 语句;或者是无返回内容的 SQL 语句,比如 DDL 语句。

  

  ResultSet  

java.sql 
接口 ResultSet


public interface ResultSetextends Wrapper

表示数据库结果集的数据表,通常通过执行查询数据库的语句生成。


5.思考与分析


  • 每次SQL的操作都需要建立和关闭连接,我们是否可以考虑对JDBC进行封装?

    答:事实上很多对JDBC的封装已经这么做了.

  • JDBC在整个java开发中占了很大的比重,是务必要学会的内容,当然原生态JDBC的增删改查比较简单.


    总结: JDBC技术,可以理解为是一门基于Java语言的数据库连接与开发技术,通过使用JDBC技术,可以利用Java语言更好更快地进行数据库开发。


          特别喜欢李小龙的一句话:"我不怕会一万种招式的对手,我怕把一种招式练一万遍的对手."



本文转自 维度2018 51CTO博客,原文链接:http://blog.51cto.com/xinsz08/1947929,如需转载请自行联系原作者

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
9月前
|
SQL Java 数据库连接
除了JDBC,还有哪些常见的数据库访问技术?
除了JDBC,还有哪些常见的数据库访问技术?
728 2
|
SQL 数据库 开发者
Python中使用Flask-SQLAlchemy对数据库的增删改查简明示例
这样我们就对Flask-SQLAlchemy进行了一次简明扼要的旅程,阐述了如何定义模型,如何创建表,以及如何进行基本的数据库操作。希望你在阅读后能对Flask-SQLAlchemy有更深入的理解,这将为你在Python世界中从事数据库相关工作提供极大的便利。
1020 77
|
XML 数据库 Android开发
Android数据库的使用(增删改查)
本文介绍了一个简单的数据库操作Demo,包含创建数据库、增删改查功能。通过5个按钮分别实现创建数据库、插入数据、删除数据、更新数据和查询数据的操作。代码结构清晰,适合初学者学习Android SQLite数据库基础操作。
390 5
|
数据库 Android开发 开发者
Android常用的room增删改查语句(外部数据库)
本文分享了将一个原生数据库驱动的单词APP重构为使用Room库的过程及遇到的问题,重点解决了Room中增删改查的常用语句实现。文章通过具体示例(以“forget”表为例),详细展示了如何定义实体类、Dao接口、Database类以及Repository和ViewModel的设计与实现。同时,提供了插入、删除、更新和查询数据的代码示例,包括模糊查询、分页加载等功能。此外,针对外部数据库导入问题,作者建议可通过公众号“计蒙不吃鱼”获取更多支持。此内容适合有一定Room基础的开发者深入学习。
373 0
Android常用的room增删改查语句(外部数据库)
|
关系型数据库 MySQL 数据库连接
Unity连接Mysql数据库 增 删 改 查
在 Unity 中连接 MySQL 数据库,需使用 MySQL Connector/NET 作为数据库连接驱动,通过提供服务器地址、端口、用户名和密码等信息建立 TCP/IP 连接。代码示例展示了如何创建连接对象并执行增删改查操作,确保数据交互的实现。测试代码中,通过 `MySqlConnection` 类连接数据库,并使用 `MySqlCommand` 执行 SQL 语句,实现数据的查询、插入、删除和更新功能。
|
SQL Java 关系型数据库
使用 JDBC 实现 Java 数据库操作
JDBC(Java Database Connectivity)是 Java 提供的数据库访问技术,允许通过 SQL 语句与数据库交互。本文详细介绍了 JDBC 的使用方法,包括环境准备、编程步骤和完整示例。
1315 7
|
SQL 关系型数据库 API
HarmonyOs开发:关系型数据库封装之增删改查
每个方法都预留了多种调用方式,比如使用callback异步回调或者使用Promise异步回调,亦或者同步执行,大家在使用的过程中,可以根据自身业务需要进行选择性调用,也分别暴露了成功和失败的方法,可以针对性的判断在执行的过程中是否执行成功。
624 13
|
SQL Java 数据库连接
【YashanDB数据库】由于网络带宽不足导致的jdbc向yashandb插入数据慢
由于网络带宽不足导致的jdbc向yashandb插入数据慢
|
SQL Java 数据库连接
JDBC编程安装———通过代码操控数据库
本文,教你从0开始学习JBCD,包括驱动包的下载安装调试设置,以及java是如何通过JBDC实现对数据库的操作,以及代码的分析,超级详细
|
存储 NoSQL API
使用Py2neo进行Neo4j图数据库的增删改查操作
使用Py2neo进行Neo4j图数据库的增删改查操作
884 5