博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDBC实现数据库的增删改查
阅读量:6181 次
发布时间:2019-06-21

本文共 4650 字,大约阅读时间需要 15 分钟。

本文主要讲解: 

  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,如需转载请自行联系原作者

你可能感兴趣的文章
寻求技术创新的现代数据中心
查看>>
混合云中容器编排引擎的好处
查看>>
《 自动化测试最佳实践:来自全球的经典自动化测试案例解析》一一 1.11 总结...
查看>>
大牛教你利用AI驱动广告自动化投放
查看>>
三星集团家族式管理遭投资者施压 为增强透明性三星电子或分拆上市
查看>>
人脸检测发展:从VJ到深度学习(下)
查看>>
唱衰联想之人显然别有用心
查看>>
广东自贸区金融物联网新进展:广清所建类标准仓单
查看>>
5G网络将率先落地北京张家口
查看>>
欧盟、美国就最终版隐私盾协议达成一致
查看>>
思维导图FreeMind
查看>>
《编程原本 》一第1 章 基础
查看>>
《Android的设计与实现:卷I》——第3章 3.2Kernel启动过程
查看>>
Tensorflow 全网最全学习资料汇总之Tensorflow 的入门与安装【2】
查看>>
光伏+特斯拉电池成本已低于电网
查看>>
SUV世家广汽三菱,牵手微信企业号打造学习型企业
查看>>
物联网带动传感器站上风口 华灿光电并购美新半导体
查看>>
江苏“光伏+”新路径:光伏发电不再与农业争光争地
查看>>
我国骨干网国际出口带宽5266G 中电信独占近60%
查看>>
迁移到云端的企业数据需注意安全
查看>>