JDBC 代码简写版案列

  简述JDBC:【链接ttps://www.yiibai.com/jdbc/】

  JDBC代表Java与数据库的连接,可以为多种关系型数据库DBMS提供统一的访问方式,简单来说,JDBC是一种规范,它所提供的接口是一套完整的,可移植的访问底层数据库的程序。

  JDBC架构:

  1.JDBC API:提供了应用程序对JDBC的管理连接;

  2.JDBC Driver API:支持JDBC管理到驱动器的连接。

  

  常用的JDBC组件:

  JDBC API 提供了以下接口和类:

  1.DriverManager :这个类管理数据库驱动程序的列表,确定内容是否符合从Java应用程序使用的通信子协议正确的数据库驱动程序连接请求,识别JDBC在子协议的第一个驱动器被用来建立数据库的连接。

  2.Driver :此接口处理与数据库服务器通信。很少直接直接使用驱动程序(Driver)对象,一般使用DriverManager中的对象,它用于管理此类型的对象。它也抽象与驱动程序对象工作相关的详细信息。

  3.Connection :此接口是与接触数据库的所有方法。连接对象表示通信上下文,即,与数据库中的所有的通信是通过此唯一的连接对象。

  4.Statement :可以使用这个接口创建的对象的SQL语句提交到数据库。一些派生的接口接受除执行存储过程的参数。

  5.ResultSet :这些对象保存从数据库查询的数据,执行使用Statement对象的SQL查询中检索数据。它作为一个迭代器,可以通过移动它来检索下一个数据。

  6.SQLException :这个类用于处理发生在数据库应用程序中的任何错误。

  Java操作数据库流程:

  Java通过JDBC API 操作 JCBC DriverManager  -> JDBC DriverManager 通过 JDBC Driver 操作数据库。

  注:驱动程序(JDBC Driver )是不一样的,驱动程序是由数据库厂商提供的,就是一个jar包。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Java操作数据库的应用案列:

  本案列使用MySQL数据库

  实现简单的对学生数据的增删改查

  1.创建一个简单的学生数据库表

  建表sql:

  CREATE TABLE students_info(
    name varchar(15),
    age int(3),
    sex int(2)
  );

  通过dos命令查询结果如下:

  

  有students_info 表,说明已经成功建立该数据库表。

  2.下载mysql驱动

  

  这里使用版本为5.1.29版本。

  3.创建一个web项目

  项目名:JDBC_Demo_0.1

  

  4.在项目的src路径下导入刚才下载好的MySQL驱动

  未导入前的图示:

  

  导入后的图示:

  

  5.将之前导入项目的MySQL数据库驱动jar包添加到项目路径中

  

  添加MySQL驱动jar包后的图示:

  

  6.新建一个Java应用类,用来实现Java操作数据库

  1 package cn.ychu.demo;
  2 
  3 import java.sql.Connection;
  4 import java.sql.DriverManager;
  5 import java.sql.PreparedStatement;
  6 import java.sql.ResultSet;
  7 import java.sql.SQLException;
  8 
  9 
 10 /**
 11  * 
 12  * @author Ychu
 13  *#这是一个简单JAVA 操作  MySQL 的Java类
 14  */
 15 public class JDBCDemo {
 16     //创建MySQL数据库连接必要的参数值
 17     private final String sqlUrl = "jdbc:mysql://localhost:3306/ychu";
 18     private final String sqlUser = "root";
 19     private final String sqlPassword = "password";
 20     
 21     //查询所有学生
 22     public  void findAllStudent() {
 23         //创建sql语句
 24         String sql = "select name,age,sex from students_info";
 25         //创建数据库连接对象
 26         Connection conn = null;
 27         //创建可执行sql指令的对象 statement 或 preparedStatement
 28 //        Statement stat = null;
 29         PreparedStatement ps = null;
 30         //获取对象集
 31         ResultSet rs = null;
 32         try {
 33             //加载数据库驱动
 34             Class.forName("com.mysql.jdbc.Driver");
 35             //获取数据连接
 36             conn = DriverManager.getConnection(sqlUrl,sqlUser,sqlPassword);
 37             //获取操作sql语句对象 Statement 或 PrepareStatement  这里我们用preparedStatemnet 预编译的方式
 38 //            stat = conn.createStatement();        //1. Statement   
 39             ps = conn.prepareStatement(sql);    //2. PreparedStatement  可执行sql预编译,防止sql注入 ,
 40             //执行sql预编译 这里查询所有不需要预编译
 41             //执行sql语句,获得结果集
 42             rs = ps.executeQuery();
 43             //处理结果集
 44             while(rs.next()) {
 45                 String name = rs.getString(1);
 46                 int age = rs.getInt(2);
 47                 int sex = rs.getInt(3);
 48                 //输出
 49                 System.out.println("查询所有学生结果:{name:"+name+",age:"+age+",sex:"+sex+"}");
 50             }
 51         }catch(ClassNotFoundException e) {
 52             e.printStackTrace();
 53         }catch(SQLException e) {
 54             e.printStackTrace();
 55         }catch(Exception e) {
 56             e.printStackTrace();
 57         }finally {//关闭资源
 58             try {
 59                 if(rs != null) rs.close();
 60                 if(ps != null) ps.close();
 61                 if(conn != null) conn.close();
 62             }catch(SQLException e) {
 63                 e.printStackTrace();
 64             }catch(Exception e) {
 65                 e.printStackTrace();
 66             }
 67         }
 68     }
 69     
 70     //根据学姓名查学生
 71     public void findStudentBySname(String sname) {
 72         //创建sql语句
 73                 String sql = "SELECT name,age,sex FROM students_info WHERE name = ?";
 74                 //创建数据库连接对象
 75                 Connection conn = null;
 76                 //创建可执行sql指令的对象 statement 或 preparedStatement
 77 //                Statement stat = null;
 78                 PreparedStatement ps = null;
 79                 //获取对象集
 80                 ResultSet rs = null;
 81                 try {
 82                     //加载数据库驱动
 83                     Class.forName("com.mysql.jdbc.Driver");
 84                     //获取数据连接
 85                     conn = DriverManager.getConnection(sqlUrl,sqlUser,sqlPassword);
 86                     //获取操作sql语句对象 Statement 或 PrepareStatement  这里我们用preparedStatemnet 预编译的方式
 87 //                    stat = conn.createStatement();        //1. Statement   
 88                     ps = conn.prepareStatement(sql);    //2. PreparedStatement  可执行sql预编译,防止sql注入 ,
 89                     //执行sql预编译 
 90                     ps.setString(1, sname);
 91                     //执行sql语句,获得结果集
 92                     rs = ps.executeQuery();
 93                     //处理结果集
 94                     while(rs.next()) {
 95                         String name = rs.getString(1);
 96                         int age = rs.getInt(2);
 97                         int sex = rs.getInt(3);
 98                         //输出
 99                         System.out.println("查询所有学生结果:{name:"+name+",age:"+age+",sex:"+sex+"}");
100                     }
101                 }catch(ClassNotFoundException e) {
102                     e.printStackTrace();
103                 }catch(SQLException e) {
104                     e.printStackTrace();
105                 }catch(Exception e) {
106                     e.printStackTrace();
107                 }finally {//关闭资源
108                     try {
109                         if(rs != null) rs.close();
110                         if(ps != null) ps.close();
111                         if(conn != null) conn.close();
112                     }catch(SQLException e) {
113                         e.printStackTrace();
114                     }catch(Exception e) {
115                         e.printStackTrace();
116                     }
117                 }
118     }
119     
120     //添加一个学生
121     public void addStudent(String name , int age , int sex ) {
122         String sql = "INSERT INTO students_info (name,age,sex) VALUES (?,?,?)";
123         Connection conn = null;
124         PreparedStatement ps = null;
125         try {
126             //加载数据库驱动
127             Class.forName("com.mysql.jdbc.Driver");
128             //获取数据库连接
129             conn = DriverManager.getConnection(sqlUrl,sqlUser,sqlPassword);
130             //获取执行sql的对象 preparedStatement
131             ps = conn.prepareStatement(sql);
132             //进行sql预编译
133             ps.setString(1, name);
134             ps.setInt(2, age);
135             ps.setInt(3, sex);
136             //执行sql
137             int resultNum = ps.executeUpdate();
138             //处理结果集
139             if(resultNum > 0) {//插入成功
140                 //日志输出
141                 System.out.println("resultNum is -> " + resultNum + ",增加结果:成功");
142             }else {//插入失败
143                 //日志输出
144                 System.out.println("resultNum is -> " + resultNum + ",增加结果:失败");
145             }
146         }catch(ClassNotFoundException e) {
147             e.printStackTrace();
148         }catch(SQLException e) {
149             e.printStackTrace();
150         }catch(Exception  e) {
151             e.printStackTrace();
152         }finally {//关闭资源
153             try {
154                 if(ps != null) ps.close();
155                 if(conn != null) conn.close();
156             }catch(SQLException e) {
157                 e.printStackTrace();
158             }catch(Exception e) {
159                 e.printStackTrace();
160             }
161         }
162     }
163     
164     //根据姓名删除一个学生
165     public void deleteStudentBySname(String sname) {
166         String sql = "DELETE FROM students_info WHERE name = ?";
167         Connection conn = null;
168         PreparedStatement ps = null;
169         try {
170             //加载数据库驱动
171             Class.forName("com.mysql.jdbc.Driver");
172             //获取数据库连接
173             conn = DriverManager.getConnection(sqlUrl,sqlUser,sqlPassword);
174             //获取执行sql的对象 preparedStatement
175             ps = conn.prepareStatement(sql);
176             //进行sql预编译
177             ps.setString(1, sname);
178             //执行sql
179             int resultNum = ps.executeUpdate();
180             //处理结果集
181             if(resultNum > 0) {//删除成功
182                 //日志输出
183                 System.out.println("resultNum is -> " + resultNum + ",删除结果:成功");
184             }else if(resultNum == 0){//删除失败,因条件找不到数据,所以删除0条
185                 //日志输出
186                 System.out.println("resultNum is -> " + resultNum + ",删除结果:失败(因条件找不到数据,所以删除0条)");
187             }else {//删除失败
188                 //日志输出
189                 System.out.println("resultNum is -> " + resultNum + ",删除结果:失败");
190             }
191         }catch(ClassNotFoundException e) {
192             e.printStackTrace();
193         }catch(SQLException e) {
194             e.printStackTrace();
195         }catch(Exception  e) {
196             e.printStackTrace();
197         }finally {//关闭资源
198             try {
199                 if(ps != null) ps.close();
200                 if(conn != null) conn.close();
201             }catch(SQLException e) {
202                 e.printStackTrace();
203             }catch(Exception e) {
204                 e.printStackTrace();
205             }
206         }
207     }
208 }
JDBCDemo.java

   7.新建一个测试Java类,用来测试

 1 package cn.ychu.test;
 2 
 3 import cn.ychu.demo.JDBCDemo;
 4 
 5 /**
 6  * 
 7  * @author Ychu
 8  *# 测试JDBC案列
 9  */
10 
11 public class JDBCTest {
12     public static void main(String[] args) {
13         JDBCDemo jdbcDemo = new JDBCDemo();
14         System.out.println("students_info为新表,一条数据都没有,下面开始用Java操作这个表 \n \n");
15         
16         System.out.println("---增加3个学生----");
17         //添加学生
18         jdbcDemo.addStudent("zs", 27, 1);
19         jdbcDemo.addStudent("ls", 28, 1);
20         jdbcDemo.addStudent("ww", 28, 1);
21         
22         System.out.println("---查询所有学生----");
23         //查询所有学生
24         jdbcDemo.findAllStudent();
25         
26         System.out.println("---根据“zs”姓名查询学生----");
27         //根据姓名查询学生
28         jdbcDemo.findStudentBySname("zs");
29         
30         System.out.println("---根据“zs”姓名删除学生----");
31         //根据姓名删除学生
32         jdbcDemo.deleteStudentBySname("zs");
33         
34         System.out.println("---再次查询所有学生----");
35         //查询所有学生
36         jdbcDemo.findAllStudent();
37     }
38 }
JDBCTest.java

  8.看控制台的日志输出

 1 students_info为新表,一条数据都没有,下面开始用Java操作这个表 
 2  
 3 
 4 ---增加3个学生----
 5 resultNum is -> 1,增加结果:成功
 6 resultNum is -> 1,增加结果:成功
 7 resultNum is -> 1,增加结果:成功
 8 ---查询所有学生----
 9 查询所有学生结果:{name:zs,age:27,sex:1}
10 查询所有学生结果:{name:ls,age:28,sex:1}
11 查询所有学生结果:{name:ww,age:28,sex:1}
12 ---根据“zs”姓名查询学生----
13 查询所有学生结果:{name:zs,age:27,sex:1}
14 ---根据“zs”姓名删除学生----
15 resultNum is -> 1,删除结果:成功
16 ---再次查询所有学生----
17 查询所有学生结果:{name:ls,age:28,sex:1}
18 查询所有学生结果:{name:ww,age:28,sex:1}
console.log

猜你喜欢

转载自www.cnblogs.com/Ychu/p/10372159.html
今日推荐