JDBC学习笔记:CRUD

1.建立数据库

 1 --创建数据库
 2 create database jdbc;
 3
 4 --选择调用jdbc数据库
 5 use jdbc;
 6
 7 --创建user表,id:设置为主键
 8 create table user
 9 (
10 id    integer not null auto_increment primary key,
11 name varchar(45) not null,
12 birthday Date,
13 money float
14 );
15
16 --向表中插入数据
17 insert into user(name,birthday,money)
18 values(‘zhangsan‘, ‘1985-01-01‘, 100),
19 (‘lisi‘, ‘1986-01-01‘, 200),
20 (‘wangwu‘, ‘1987-01-01‘, 300);

2.JDBC操作的基本步骤

  (1)加载驱动:只需加载一次

  (2)建立连接:建立与数据库的连接,DriverManager.getConnection(url,username,password); url格式:jdbc:协议名称:子名称//主机地址:端口号/数据库名称  username:数据库用户名  password:密码

  (3)创建语句

  (4)执行语句

  (5)处理执行结果

  (6)关闭连接,释放资源

 1 import java.sql.Connection;
 2 import java.sql.DriverManager;
 3 import java.sql.ResultSet;
 4 import java.sql.SQLException;
 5 import java.sql.Statement;
 6
 7 public class Demo {
 8
 9     public static void main(String[] args) throws ClassNotFoundException, SQLException {
10         // 加载驱动
11         Class.forName("com.mysql.jdbc.Driver");
12
13         // 建立连接  url格式 - jdbc:子协议:子名称//主机名:端口/数据库名?属性名=属性值&…
14         Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc","root","1234");
15
16         // 创建语句
17         Statement st = conn.createStatement();
18
19         // 执行语句
20         ResultSet rs = st.executeQuery("select * from user");
21
22         // 处理结果,打印user表中的id字段
23         while(rs.next()) {
24             System.out.println(rs.getInt("id"));
25         }
26
27         //关闭连接,释放资源
28         rs.close();
29         st.close();
30         conn.close();
31     }
32 }

【运行结果】:

1    zhangsan
2    lisi
3    wangwu

3.自建工具包

(1)创建连接和释放资源的工具包

 1  2
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.ResultSet;
 6 import java.sql.SQLException;
 7 import java.sql.Statement;
 8
 9 public final class JdbcUtils {
10
11     private static String url = "jdbc:mysql://localhost:3306/jdbc";
12     private static String user = "root";
13     private static String password = "1234";
14
15     private JdbcUtils(){}
16
17     static {
18         try {
19             Class.forName("com.mysql.jdbc.Driver");
20         } catch (ClassNotFoundException e) {
21             throw new ExceptionInInitializerError(e);
22         }
23     }
24
25     public static Connection getConnection() throws SQLException {
26         return DriverManager.getConnection(url, user, password);
27     }
28
29     public static void free(ResultSet rs, Statement st, Connection conn) {
30         try {
31             if (rs != null) {
32                 rs.close();
33             }
34         } catch (SQLException e) {
35             e.printStackTrace();
36         } finally {
37             try {
38                 if (st != null)
39                     st.close();
40             } catch (SQLException e) {
41                 e.printStackTrace();
42             } finally {
43                 if (conn != null)
44                     try {
45                         conn.close();
46                     } catch (SQLException e) {
47                         e.printStackTrace();
48                     }
49             }
50         }
51     }
52 }

(2)利用单利设计模式创建的工具包,用于建立连接和释放资源

 1  2
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.ResultSet;
 6 import java.sql.SQLException;
 7 import java.sql.Statement;
 8
 9 public class JdbcUtilsSing {
10
11     private String url = "jdbc:mysql://localhost:3306/jdbc";
12     private String user = "root";
13     private String password = "1234";
14
15     private static JdbcUtilsSing instance = null;
16
17     private JdbcUtilsSing() {
18
19     }
20
21     public static JdbcUtilsSing getInstance() {
22
23         if (instance == null) {
24             synchronized(JdbcUtilsSing.class) {
25                 if (instance == null)
26                     instance = new JdbcUtilsSing();
27             }
28         }
29         return instance;
30     }
31
32     static {
33         try {
34             Class.forName("com.mysql.jdbc.Driver");
35         } catch (ClassNotFoundException e) {
36             throw new ExceptionInInitializerError(e);
37         }
38     }
39
40     public Connection getConnection() throws SQLException {
41         return DriverManager.getConnection(url, user, password);
42     }
43
44     public void free(ResultSet rs, Statement st, Connection conn) {
45         try {
46             if (rs != null) {
47                 rs.close();
48             }
49         } catch (SQLException e) {
50             e.printStackTrace();
51         } finally {
52             try {
53                 if (st != null)
54                     st.close();
55             } catch (SQLException e) {
56                 e.printStackTrace();
57             } finally {
58                 if (conn != null)
59                     try {
60                         conn.close();
61                     } catch (SQLException e) {
62                         e.printStackTrace();
63                     }
64             }
65         }
66     }
67 }

4.利用Junit测试CRUD操作

(1)create

 1     @Test
 2     public void create() throws SQLException {
 3         Connection conn = null;
 4         Statement st = null;
 5         ResultSet rs = null;
 6         try {
 7             conn = JdbcUtils.getConnection();
 8             st = conn.createStatement();
 9             String sql = "insert into user(name,birthday,money) values(‘name 1‘,‘1987-01-01‘,400)";
10             int i = st.executeUpdate(sql);
11             System.out.println("i = " + i);
12         } finally {
13             JdbcUtils.free(rs, st, conn);
14         }
15     }

(2)read

 1     @Test
 2     public void read() throws SQLException {
 3         Connection conn = null;
 4         Statement st = null;
 5         ResultSet rs = null;
 6         try {
 7             conn = JdbcUtils.getConnection();
 8             st = conn.createStatement();
 9             rs = st.executeQuery("select id,name,birthday,money from user");
10
11             while(rs.next()) {
12                 System.out.println(rs.getInt("id") + "\t" + rs.getString("name") + "\t"
13                         + rs.getDate("birthday"));
14             }
15         } finally {
16             JdbcUtils.free(rs, st, conn);
17         }
18     }

(3)update

 1     @Test
 2     public void update() throws SQLException {
 3         Connection conn = null;
 4         Statement st = null;
 5         ResultSet rs = null;
 6         try {
 7             conn = JdbcUtils.getConnection();
 8             st = conn.createStatement();
 9             String sql = "update user set money=money+100";
10             int i = st.executeUpdate(sql);
11             System.out.println("i = " + i);
12         } finally {
13             JdbcUtils.free(rs, st, conn);
14         }
15     }

(4)delete

 1     @Test
 2     public void delete() throws SQLException {
 3         Connection conn = null;
 4         Statement st = null;
 5         ResultSet rs = null;
 6         try {
 7             conn = JdbcUtils.getConnection();
 8             st = conn.createStatement();
 9             String sql = "delete from user where id > 3";
10             int i = st.executeUpdate(sql);
11             System.out.println("i = " + i);
12         } finally {
13             JdbcUtils.free(rs, st, conn);
14         }
15     }
时间: 2024-11-09 09:52:31

JDBC学习笔记:CRUD的相关文章

JDBC学习笔记(一)

public static void main(String[] args) { ResultSet rs = null; Statement stmt = null; Connection conn = null; try { /** * 1.加载JDBC驱动程序: * 加载目标数据库驱动到JVM * 成功加载后,会将Driver类的实例注册到DriverManager类 * oracle-Driver:oracle.jdbc.driver.OracleDriver * MySQL-Drive

JDBC学习笔记二

Statement执行更新操作 Statement:Statement 是 Java 执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.Statement对象,用于执行不带参数的简单SQL语句. 通过JDBC向指定的数据表中插入一条记录,需要注意下面的几点: * 1.Statement:用于执行SQL语句的对象 * 1).通过COnnection的createStatement()方法来获取 * 2).通过excuteUpdate(sql)可以执行S

【转】JDBC学习笔记(2)——Statement和ResultSet

转自:http://www.cnblogs.com/ysw-go/ Statement执行更新操作 Statement:Statement 是 Java 执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.Statement对象,用于执行不带参数的简单SQL语句. 通过JDBC向指定的数据表中插入一条记录,需要注意下面的几点: * 1.Statement:用于执行SQL语句的对象 * 1).通过COnnection的createStatement()方

JDBC学习笔记一

JDBC JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据.JDBC代表Java数据库连接. JDBC库中所包含的API任务通常与数据库使用: 连接到数据库 创建SQL或MySQL语句 在数据库中执行SQL或MySQL查询 查看和修改记录 JDBC架构   JDBC API支持两层和三层的处理模式对数据库的访问,但一般JDBC体系结构由两层组成: JDBC API: 这提供了应用程序到JDBC管理器连接. JDBC Driver API: 这支持J

【转】JDBC学习笔记(1)——JDBC概述

转自:http://www.cnblogs.com/ysw-go/ JDBC JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据.JDBC代表Java数据库连接. JDBC库中所包含的API任务通常与数据库使用: 连接到数据库 创建SQL或MySQL语句 在数据库中执行SQL或MySQL查询 查看和修改记录 JDBC架构   JDBC API支持两层和三层的处理模式对数据库的访问,但一般JDBC体系结构由两层组成: JDBC API: 这提供了应用程

JDBC学习笔记(5):数据库的基本操作CRUD

1.查询 public static void read() throws SQLException { Connection conn = null; Statement stmt = null; ResultSet rs = null; try { conn = JdbcUtils.getConnection(); stmt = conn.createStatement(); rs = stmt.executeQuery("select * from user"); while(r

JDBC学习笔记及问题小结

JDBC => Java Database connectivity => 数据库连接 JDBC 就是由 java提供的一套访问数据库的统一api. 使用这套api , 我们在 切换库时 十分方便. 并且切换库不会改变代码.学习成本也降低了. 1.开发一个jdbc程序 1> 导包 ==> 导入厂商提供的数据库驱动. ==> mysql-connector-java-5.0.8-bin.jar 2> 注册驱动 3> 连接数据库 4> 操作数据库(执行sql)

JDBC学习笔记(7)——事务的隔离级别&批量处理

数据库事务的隔离级别 对于同时运行的多个事务, 当这些事务访问数据库中相同的数据时, 如果没有采取必要的隔离机制, 就会导致各种并发问题:脏读: 对于两个事物 T1, T2, T1 读取了已经被 T2 更新但还没有被提交的字段. 之后, 若 T2 回滚, T1读取的内容就是临时且无效的.不可重复读: 对于两个事物 T1, T2, T1 读取了一个字段, 然后 T2 更新了该字段. 之后, T1再次读取同一个字段, 值就不同了.幻读: 对于两个事物 T1, T2, T1 从一个表中读取了一个字段,

JDBC学习笔记(10)——调用函数&存储过程

如何使用JDBC调用存储在数据库中的函数或存储过程: * 1.通过COnnection对象的prepareCall()方法创建一个CallableStatement *    对象的实例,在使用Connection对象的prepareCall() 方法时,需要传入一个String类型的字符串, *    该字符串用于指明如何调用存储过程 * 2.通过CallableStatement对象的registerOutParameter() 方法注册Out参数 * 3.通过CallableStateme