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

原文地址:https://www.cnblogs.com/Ychu/p/10372159.html

时间: 2024-09-30 18:59:38

JDBC 代码简写版案列的相关文章

(11)网页样式综合案列---灵活的电子相册 {上}

本篇学习资料讲解:       通过css对电子相册进行排版 和 侧面强调“盒子模型.标准流.浮动和定位”的重要性. 先来看看"双向联动模式"的电子相册图: {鼠标指针经过某张图片(或者某段文字)时,相应的文字(或者相应的某张图片)会以特殊样式显示} 以上部分的介绍将出现在(12)网页样式综合案列---灵活的电子相册 {下},这里只是提前感受. 1.搭建基本框架 搭建框架主要应考虑在实际页面中相册的具体结构和形式,包括照片整体排列的方法,用户可能的浏览情况,照片是否需要自动调整,等等.

linux下mysql函数的详细案列

1 MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host, 2 const char *user, 3 const char *passwd, 4 unsigned int port, 5 const char *unix_socket, 6 unsigned int clientflag); 1.  如何连接数据mysql数据库.... [[email protected] Mysql]$ cat demo.c 1

MFC抓取网页代码简单版。

最近又在网上找了一些有关MFC抓取网页代码的文章看,发现有个比较简单的代码,和大家分享下. CInternetSession session(NULL, 0); CHttpFile* htmlFile = NULL; CString strLine, strHtml; CString url = _T("http://www.tqyb.com.cn/data/gzWeather/gz_weatherForecastInDays.js?"); TCHAR sRecv[1024]; UIN

GL_子模组过账至总账通过SLA修改会计方法改变科目(案列)

2014-06-02 BaoXinjian 一.摘要 通过SLA会计方法的重新定义,修改从子模组过账至总账的默认会计方法,修改会计科目逻辑,实现按不同的会计法设定不同的会计方法 二.案例 1. 定义Mapping set 2. 定义科目5个Segment对应的Account Derivation Rule 3. 定义Journal Line Defination 4. 定义Application Accounting Definitions 5. 定义Subledger Accounting D

分针网——每日分享:10个程序员常用的代码简写技术

更多文章:www.f-z.cn 今天小编我给大家整理了一份10个程序员常用的代码简写技术,看懂一种是入门,全懂就是大神,你能知道几个呢? 1.三元操作符 当想写if...else语句时,使用三元操作符来代替. const x = 20;let answer;if (x > 10) { 简写: const answer = x > 10 ? 'is greater' : 'is lesser'; 也可以嵌套if语句: const big = x > 10 ? " greater

oracle创建表案列

下面是以商品交易为案列 做的关于用户.库存.商品.交易的表格

Java网络编程(ECHO案列)

//服务器端 package org.tcp; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; public class EchoServer { public static void main(String[] args) throws Excepti

OAF_查询4种不同的实现方式的比较和实现(案列)

2014-06-02 BaoXinjian 一.摘要 OAF实现查询功能或需求,一般都会采用以下四种方式 (1). ResultBasedSearch 最简单的实现方式,将结果中某些栏位需要查询的栏位的属性search设定为true即可 (2). AutoCustomizationCriteria:SimpleSearchPanel & AdvancedSearchPannel 使用最多的查询方式,存在两种方式simple & advanced pannel (3). 完全客制化Searc

php知识案列分享

今天再跟大家分享一下,以下案列. 使用array_flip函数生成随机数,可以去掉重复值. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <?php $arr=array(); $count1=0; $count = 0; $return = array(); while ($count < 10) { $return[] = mt_rand(1, 10); $return = array_flip(array_flip($return)