一  首先第一步我们现在数据库里创建一张examstudent空表:

二 接着对应着表里内容创建一个学生类:

package com.atguigu.jdbc;public class Student {// 流水号private int flowId;// 考试类型private int type;// 身份证号private String idCard;// 准考证号private String examCard;// 学生名private String studentName;// 学生地址private String location;// 考试分数private int grade;public int getFlowId() {return flowId;}public void setFlowId(int flowId) {this.flowId = flowId;}public int getType() {return type;}public void setType(int type) {this.type = type;}public String getIdCard() {return idCard;}public void setIdCard(String idCard) {this.idCard = idCard;}public String getExamCard() {return examCard;}public void setExamCard(String examCard) {this.examCard = examCard;}public String getStudentName() {return studentName;}public void setStudentName(String studentName) {this.studentName = studentName;}public String getLocation() {return location;}public void setLocation(String location) {this.location = location;}public int getGrade() {return grade;}public void setGrade(int grade) {this.grade = grade;}public Student(int flowId, int type, String idCard, String examCard, String studentName, String location,int grade) {super();this.flowId = flowId;this.type = type;this.idCard = idCard;this.examCard = examCard;this.studentName = studentName;this.location = location;this.grade = grade;}@Overridepublic String toString() {return "Student [flowId=" + flowId + ", type=" + type + ", idCard=" + idCard + ", examCard=" + examCard+ ", studentName=" + studentName + ", location=" + location + ", grade=" + grade + "]";}}

三 然后就是书写一个JDBCTools工具类,用于数据库的增删改操作:

package com.atguigu.jdbc;import java.beans.Statement;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;import com.mysql.jdbc.Connection;/*** 手写操作JDBC的工具类,封装了一些工具方法 Version 1*/
public class JDBCTools {/*** 1. 获取连接的方法 通过读取配置文件从数据库服务器获取一个连接* * @return* @throws Exception*/public static Connection getConnection() throws IOException, ClassNotFoundException, SQLException {// 1.准备连接数据库的4个字符串// 1).创建Properties对象Properties properties = new Properties();// 2).获取jdbc.properties对应的输入流InputStream in = JDBCTools.class.getClassLoader().getResourceAsStream("jdbc.properties");// 3).加载2)对应的输入流properties.load(in);// 4)具体决定user,password等4个字符串String user = properties.getProperty("user");String password = properties.getProperty("password");String jdbcUrl = properties.getProperty("jdbcUrl");String driver = properties.getProperty("driver");// 2.加载数据库驱动程序(对应Driver 实现类中有注册驱动的静态代码块)Class.forName(driver);// 3.通过DriverManager的getConnection()方法获取数据库连接return (Connection) DriverManager.getConnection(jdbcUrl, user, password);}/*** 关闭ResultSet、Statement、Connectionh 关闭原则:和栈类似,先开启的后关闭,后开启的先关闭.* * @param statement* @param conn*/public static void release(ResultSet rs, java.sql.Statement statement, Connection conn) {// 关闭ResultSet对象if (rs != null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();}}// 关闭Statement对象if (statement != null) {try {statement.close();} catch (Exception e) {e.printStackTrace();}}// 关闭conn对象if (conn != null) {try {conn.close();} catch (Exception e) {e.printStackTrace();}}}/*** 执行SQL的方法* * @param sql:insert*            update或delete,而不包含select*/public static void update(String sql) {// 1. 获取数据库连接Connection conn = null;java.sql.Statement statement = null;ResultSet rs = null;try {conn = JDBCTools.getConnection();// 2. 准备插入的SQL语句语句// a. 插入// sql = "INSERT INTO customers(ID, NAME, EMAIL, BIRTH) "// + "VALUES ('2018','王小二', '163@erpang.com', '1999-04-24')";// b. 删除// sql = "DELETE FROM customers WhERE ID = '2018'";// c. 更新// sql = "UPDATE customers SET EMAIL = '163@二胖.com' WHERE ID = '2017'";System.out.println(sql);// 3. 执行插入// 1)获取操作SQL语句的Statement对象:调用Connection的createStatement()方法来获取statement = conn.createStatement();// 2)调用Statement对象的executeUpdate(sql)执行SQL语句进行插入statement.executeUpdate(sql);} catch (Exception e) {e.printStackTrace();} finally {// 关闭连接JDBCTools.release(rs, statement, conn);}}
}

四 最后就是写向数据库里录入学生信息操作:

package com.atguigu.jdbc;import java.util.Scanner;import org.junit.Test;public class JDBCStudent {/*** 向数据库里录入学生信息测试*/@Testpublic void testAddNewStudent() { Student student = getStudentFromConsole();addNewStudent(student);}/*** 从控制台输入学生的信息* @return*/private Student getStudentFromConsole() {Scanner scanner = new Scanner(System.in);Student student = new Student(0, 0, null, null, null, null, 0);System.out.print("FlowId: ");student.setFlowId(scanner.nextInt());System.out.print("Type: ");student.setType(scanner.nextInt());System.out.print("IdCard: ");student.setIdCard(scanner.next());System.err.print("ExamCard: ");student.setExamCard(scanner.next());System.out.print("StudentName: ");student.setStudentName(scanner.next());System.out.print("Location: ");student.setLocation(scanner.next());System.out.print("Grade: ");student.setGrade(scanner.nextInt());return student;}public void addNewStudent(Student student) {//1. 准备一条sql语句:String sql = "INSERT INTO examstudent "+ "VALUES(" + student.getFlowId() + "," + student.getType()+ ",'" + student.getIdCard()+ "','" + student.getExamCard()+ "','" + student.getStudentName()+ "','" + student.getLocation()+ "'," + student.getGrade() + ")";}
}

五 启用sql的update操作:

 //2. 调用JDBCTools类的update(sql)方法执行插入操作JDBCTools.update(sql);

六 从控制台输入信息后,我们来看数据库里是否成功录入信息:

很不错,我门成功了!

七 下面我们将通过表中的一些关键字查找某条学生的所有信息:
1 首先准备下面的几个函数:

public void testGetStudent() {//1. 得到查询的类型int searchType = getSearchTypeFromConsole();//2. 具体查询学生信息Student student = searchStudent(searchType);//3. 打印学生信息printStudent(student);}

2. 接着从控制台读入一个整数,确定要查询的类型,有两种查询方法:一种是通过身份证,另一种就是通过准考证

/*** 从控制台读入一个整数,确定要查询的类型* @return 1. 用身份证查询, 2. 用准考证查询,其他无效,并提示请用户重新输入*/private int getSearchTypeFromConsole() {System.out.println("请输入查询类型: 1. 用身份证查询. 2. 用准考证查询");Scanner scanner = new Scanner(System.in);int type = scanner.nextInt();if(type != 1&& type != 2) {System.out.println("输入有误请重新输入!");//此时要使得整个程序中断throw new RuntimeException();}return type;}

3  具体查询学生信息的,返回一个Student对象,若不存在,则返回null,输入1表示用身份证查询,输入2表示用准考证查询

/*** 具体查询学生信息的,返回一个Student对象,若不存在,则返回null* @param searchType: 1或者2* @return*/private Student searchStudent(int searchType) {String sql = "SELECT FlowId, Type, IdCard, ExamCard, Studentname, Location, Grade"+ " FROM examstudent WHERE ";Scanner scanner = new Scanner(System.in);//1. 根据输入的searchType,提示用户信息://1) 若searchType为1,提示:请输入身份证号,若为2提示:请输入准考证号//2. 根据searchType确定SQLif(searchType == 1) {System.out.println("请输入身份证号:");String idCard = scanner.next();sql = sql + "IdCard = '" + idCard + "'";} else {System.out.println("请输入准考证号:");String examCard = scanner.next();sql = sql + "ExamCard = '" + examCard + "'";}//3. 执行查询Student student = getStudent(sql);//4. 若存在查询结果,把查询结果封装为一个Student对象return student;}

4通过resultSet = statement.executeQuery(sql)执行sql的查询语句,记得最后要释放资源

JDBCTools.release(resultSet, statement, connection)。

/*** 根据传入的SQL返回Student对象* @param sql* @return*/private Student getStudent(String sql) {Student stu = null;Connection connection = null;java.sql.Statement statement = null;ResultSet resultSet = null;try {connection = JDBCTools.getConnection();statement = connection.createStatement();resultSet = statement.executeQuery(sql);if(resultSet.next()) {stu = new Student(resultSet.getInt(1), resultSet.getInt(2), resultSet.getString(3), resultSet.getString(4), resultSet.getString(5), resultSet.getString(6), resultSet.getInt(7));}} catch (Exception e) {e.printStackTrace();} finally {JDBCTools.release(resultSet, statement, connection);}return stu;}

5. 打印学生信息:若学生存在打印具体信息,若不存在:打印查无此人

/*** 打印学生信息:若学生存在打印具体信息,若不存在:打印查无此人* @param student*/private void printStudent(Student student) {if(student != null) {System.out.println(student);} else {System.out.println("查无此人!");}}

完整代码:

package com.atguigu.jdbc;import java.beans.Statement;
import java.sql.ResultSet;
import java.util.Scanner;
import javax.management.RuntimeErrorException;
import org.junit.Test;
import com.mysql.jdbc.Connection;public class JDBCStudent {@Testpublic void testGetStudent() {//1. 得到查询的类型int searchType = getSearchTypeFromConsole();//2. 具体查询学生信息Student student = searchStudent(searchType);//3. 打印学生信息printStudent(student);}/*** 打印学生信息:若学生存在打印具体信息,若不存在:打印查无此人* @param student*/private void printStudent(Student student) {if(student != null) {System.out.println(student);} else {System.out.println("查无此人!");}}/*** 具体查询学生信息的,返回一个Student对象,若不存在,则返回null* @param searchType: 1或者2* @return*/private Student searchStudent(int searchType) {String sql = "SELECT FlowId, Type, IdCard, ExamCard, Studentname, Location, Grade"+ " FROM examstudent WHERE ";Scanner scanner = new Scanner(System.in);//1. 根据输入的searchType,提示用户信息://1) 若searchType为1,提示:请输入身份证号,若为2提示:请输入准考证号//2. 根据searchType确定SQLif(searchType == 1) {System.out.println("请输入身份证号:");String idCard = scanner.next();sql = sql + "IdCard = '" + idCard + "'";} else {System.out.println("请输入准考证号:");String examCard = scanner.next();sql = sql + "ExamCard = '" + examCard + "'";}//3. 执行查询Student student = getStudent(sql);//4. 若存在查询结果,把查询结果封装为一个Student对象return student;}/*** 根据传入的SQL返回Student对象* @param sql* @return*/private Student getStudent(String sql) {Student stu = null;Connection connection = null;java.sql.Statement statement = null;ResultSet resultSet = null;try {connection = JDBCTools.getConnection();statement = connection.createStatement();resultSet = statement.executeQuery(sql);if(resultSet.next()) {stu = new Student(resultSet.getInt(1), resultSet.getInt(2), resultSet.getString(3), resultSet.getString(4), resultSet.getString(5), resultSet.getString(6), resultSet.getInt(7));}} catch (Exception e) {e.printStackTrace();} finally {JDBCTools.release(resultSet, statement, connection);}return stu;}/*** 从控制台读入一个整数,确定要查询的类型* @return 1. 用身份证查询, 2. 用准考证查询,其他无效,并提示请用户重新输入*/private int getSearchTypeFromConsole() {System.out.println("请输入查询类型: 1. 用身份证查询. 2. 用准考证查询");Scanner scanner = new Scanner(System.in);int type = scanner.nextInt();if(type != 1&& type != 2) {System.out.println("输入有误请重新输入!");//此时要使得整个程序中断throw new RuntimeException();}return type;}
}

6 测试情况:
输入1:

输入2:

如上图所示:两种查询方法都成功了!

假如我们输入3或者其他数呢?

程序直接停止运行了,需要你重新输入。

八 综上所述,此个小程序完成的主要将任务是的学生信息录入数据库,再通过某个关键字将某个学生的信息查询出来。

通过JDBC连接数据库再向数据库里录入数据相关推荐

  1. 通过VB向SQL Server数据库中录入数据

    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 一.数据录入 通过VB向SQL Se ...

  2. mysql批量删除进程_小程序批量删除云数据库里的数据

    我们用云开发的云数据库存数据,难免会遇到数据过多,或者一些过时数据要删除的需求.之前云开发删除数据库只能一条条的删除.要想批量删除很麻烦,近期云开发推出了批量删除数据的方法.甚至可以稍微改造下实现数据 ...

  3. java 往excel中写数据库,poi将数据写入excel表格-怎么用java把数据库里的数据写入到excel表中...

    怎么用java把数据库里的数据写入到excel表中 你是想读取excel内容,然后整合一下数据,然后再生成一个新的excel吧 package aa; import java.io.FileInput ...

  4. oracle数据库数据消失,,保存在数据库里的数据莫名其妙的消失

    求助,保存在数据库里的数据莫名其妙的消失 我做了一个批量修改的功能,数据是肯定存到数据库里了,提交给测试部测试也没什么BUG,可是当有别的classes文件替换之后 重启服务器,我之前修改的数据就会莫 ...

  5. 用java程序完成从kafka队列读取消息到sparkstreaming再从sparkstreaming里把数据导入mysql中

    有一段时间没好好写博客了,因为一直在做一个比较小型的工程项目,也常常用在企业里,就是将流式数据处理收集,再将这些流式数据进行一些计算以后再保存在mysql上,这是一套比较完整的流程,并且可以从数据库中 ...

  6. 如何获取公开数据库里的数据

    1. 用代码获取数据 当然下载数据的方式有多种多样,你可以用最原始的方法在数据库网站上点击下载,但是在不经意之间,电脑不仅帮你下载好了数据,还把原本压缩好的数据给自动解压缩了,原本小巧的压缩包瞬间变成 ...

  7. 使用Excel下载数据库里的数据

    今天我们来看看用Excel下载指定数据库里面的数据. 所用软件: Microsoft Visual Studio 2010 SQL Server Management Studio 首先,我们要建立一 ...

  8. JAVA的JDBC连接数据库以及读取数据库数据

    一.下载数据库JDBC驱动 1.1:Mysql驱动 https://dev.mysql.com/downloads/connector/ 下载得到的是一个压缩包,解压后到里面寻找文件:mysql-co ...

  9. java在mysql读取数据库数据库数据_JAVA的JDBC连接数据库以及读取数据库数据

    一.下载数据库JDBC驱动 1.1:Mysql驱动 https://dev.mysql.com/downloads/connector/ 下载得到的是一个压缩包,解压后到里面寻找文件:mysql-co ...

最新文章

  1. 规格表管理之更新规格表数据
  2. com:向对象到面向服务
  3. idea集成spring+spring MVC+mybatis问题
  4. vim、g++、gdb及makefile的学习
  5. 单色半透明-兼容IE7
  6. 【iOS开发】添加评分功能
  7. java用volatile或AtomicBoolean实现高效并发处理 (只初始化一次的功能要求)
  8. layui 鼠标移入变为小手_如何在 LayUI 数据表格的列元素上,鼠标悬浮,显示所有文字内容(修改源码)...
  9. 嵌入式Linux截图工具gsnap移植与分析【转】
  10. 计算机应用高级教程,大学计算机应用高级教程(第3版)简介,目录书摘
  11. 智慧校园是实现智慧教育的必由之路
  12. 【附源码】Java计算机毕业设计计算机配件价格查询微信小程序(程序+LW+部署)
  13. 锤子android 7,锤子正式加入安卓7.1.1阵容 一加3/3T尝鲜氢OS公测版
  14. Springboot+Netty实现基于天翼物联网平台CTWing(AIOT)终端TCP协议(透传模式)-设备终端(南向设备)
  15. 2015‘互联网+中国’峰会——马化腾主题演讲
  16. 关于“探码科技”,ChatGPT 如是说
  17. Kubernetes 1.22发布:迈向新巅峰
  18. 集合迭代、for遍历、foreach遍历
  19. java 图像特效之放大镜与哈哈镜
  20. nodejs 通过ffmpeg,实现微信jsapi上传mp3录音

热门文章

  1. windows下安装rattle包所踩的坑
  2. python3学习中一些琐碎东西的存档
  3. java地铁最短,世界上最短的地铁 600米长的地铁线路
  4. windows下gvim打开文件显示乱码的解决
  5. 非主流,wake up,你们是这个社会的未来
  6. 配置Grafana展示天融信防火墙日志
  7. 【单片机毕业设计】【mcuclub-cl-011】基于单片机的红外遥控小车的设计
  8. Python文件运行说明书以及解决的过程_一蓑烟雨任平生
  9. spark 算子 详解
  10. 斯坦福Introduction to NLP:第十讲关系抽取