JDBC实现数据库的增删改查

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

本文主要讲解: 

  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语言更好更快地进行数据库开发。


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

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


维度2018

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
SQL Java 关系型数据库
JDBC操作数据库
JDBC是实现java程序对各种数据库的访问,是一组类和接口,位于java.sql与javax.sql包
33 0
|
9月前
|
SQL 数据库
数据库视频总结之增删改查
数据库视频总结之增删改查
142 0
|
7月前
|
SQL Java 数据库连接
使用JDBC操作数据库
使用JDBC操作数据库
使用JDBC操作数据库
|
10月前
|
关系型数据库 MySQL 数据库
mysql CRUD操作数据库、表
CRUD 操作数据库、表 C(Create):创建 如果没有数据库创建,有的话不报错 create database if not exists db1 指定字符 create database db2 character set GBK; 数据库创建判断,字符集指定 create database if not exists db1 character set GBK; R(Retrieve):查询 查看数据库字符集 show create database mysql U(Update):修改 修改数据库字符集 alter database db2 ch
54 0
|
10月前
|
数据库
数据库的增删改查
数据库的增删改查
|
10月前
|
关系型数据库 MySQL 数据库
MySQL_3 数据库的“CRUD“
MySQL 第三节 数据库表数据的增删查改 内容分享。
80 2
|
SQL 存储 Java
使用jdbc对数据库增删改查
使用jdbc对数据库增删改查
|
Java 关系型数据库 MySQL
JDBC实现MySQL数据库的增删改查(上)
JDBC实现MySQL数据库的增删改查(上)
100 0
JDBC实现MySQL数据库的增删改查(上)
|
SQL Java 关系型数据库
JDBC实现MySQL数据库的增删改查(下)
JDBC实现MySQL数据库的增删改查(下)
109 0
JDBC实现MySQL数据库的增删改查(下)
|
数据库 数据库管理
数据库的创建与使用(CRUD)
本文用到SQLite数据库一款轻量级数据库 使用是继承于SQLiteOpenHelper抽象类 首先创建一个Helper(自定义)类用于继承SQLiteOpenHelper抽象类 public class Helper extends SQLiteOpenHelper 然后他有三个必须实现的方法
198 0
数据库的创建与使用(CRUD)

热门文章

最新文章