以面向对象的思想编写JDBC程序,实现使用java程序向数据表中添加学生信息,并且可以实现给定身份证号查询学生信息或给定准考证号查询学生信息。

创建的数据表如下:

CREATE TABLE EXAMSTUDENT(
FlowID INTEGER,
Type INTEGER,
IDCard VARCHAR(18),
ExamCard VARCHAR(15),
StudentName VARCHAR(20),
Location VARCHAR(20),
Grade INTEGER);

1.首先实现通过java程序在创建的数据表中插入一个新的student信息,输入详细信息之后显示消息录入成功。

1).新建一个Student,对应examstudent数据表。

Student.java

package com.test.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;
}
public Student(){ }
@Override
public String toString() {
return "student [flowId=" + flowId + ", type=" + type + ", idCard=" + idCard + ", examCard=" + examCard
+ ", studentName=" + studentName + ", location=" + location + ", grade=" + grade + "]";
} }

2).新建一个方法:void addNewStudent(Student student),把参数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()+")";
System.out.println(sql);
//2.调用JDBCTools类的update(sql)方法执行插入操作
JDBCTools.update(sql);
}

3).从控制台输入学生的信息。

private Student getStudentFromConsole() {
Scanner scanner=new Scanner(System.in);
Student student=new Student();
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.out.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;
}

4).方法调用并测试

@Test
public void testAddNewStudent(){
Student student=getStudentFromConsole();
addNewStudent(student);
}

2.给定身份证号或准考证号查询学生信息

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

1).得到查询类型

private int getSearchTypeFromConsole() {
System.out.println("查询类型:1.根据身份证号查询学生信息 2.根据准考证号查询学生信息 ");
System.out.print("请输入查询类型:");
Scanner scanner=new Scanner(System.in);
int type=scanner.nextInt();
if ((type!=1)&&(type!=2)){
System.out.print("1.根据身份证号查询学生信息 2.根据准考证号查询学生信息.请重新输入查询类型:");
throw new RuntimeException();
}
return type;
}

2).具体查询学生信息

private Student searchStudent(int searchType) {
String sql="SELECT FlowID,TYPE,IDCard,ExamCard,StudentName,Location,Grade FROM EXAMSTUDENT WHERE ";
Scanner scanner=new Scanner(System.in);
if (searchType==1){
System.out.print("请输入身份证号:");
String str=scanner.next();
sql=sql+"IDCard="+"'"+str+"'";
}else{
System.out.print("请输入准考证号:");
String str=scanner.next();
sql=sql+"ExamCard"+"'"+str+"'";
}
Student student=getStudent(sql);
return student;
}

数据库操作获取学生信息:

private Student getStudent(String sql) {
Student stu=null;
Connection con=null;
Statement statement=null;
ResultSet resultset=null; try{
con=JDBCTools.getConnection();
statement=con.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(statement, con);
}
return stu;
}

3).打印学生信息

private void printStudent(Student student) {
if(student!=null){
System.out.println(student);
}else{
System.out.println("查无此人");
}
}

完整的示例代码:

Student.java(上面已给出)

数据库操作工具类:JDBCTools.java

package com.test.jdbc;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import org.junit.Test; public class JDBCTools {
//更新数据库
public static void update(String sql){
Connection con=null;
Statement statement=null;
try{
con=JDBCTools.getConnection();
statement=con.createStatement();
statement.executeUpdate(sql);
}catch(Exception e){
e.printStackTrace();
}finally{
JDBCTools.release(statement, con);
}
}
//获取数据库的连接
public static Connection getConnection() throws Exception{
String driverClass=null;
String jdbcUrl=null;
String user=null;
String password=null; InputStream in=JDBCTools.class.getResourceAsStream("/jdbc.properties");
Properties properties=new Properties();
properties.load(in); driverClass=properties.getProperty("driver");
jdbcUrl=properties.getProperty("jdbcUrl");
user=properties.getProperty("user");
password=properties.getProperty("password"); Class.forName(driverClass);
Connection connection=DriverManager.getConnection(jdbcUrl,user,password); return connection;
}
@Test
public void testGetConnection() throws Exception{
getConnection();
}
//数据库释放
public static void release(Statement statement,Connection connection){
if(statement!=null){
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(connection!=null){
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

功能实现类:JDBCTest.java

package com.test.jdbc;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner;
import org.junit.Test; public class JDBCTest {
@Test
public void testGetStudent(){
//1.得到查询的类型
int searchType=getSearchTypeFromConsole();
//2.具体查询学生信息
Student student=searchStudent(searchType);
//3.打印学生信息
printStudent(student);
}
private void printStudent(Student student) {
if(student!=null){
System.out.println(student);
}else{
System.out.println("查无此人");
}
}
private Student searchStudent(int searchType) {
String sql="SELECT FlowID,TYPE,IDCard,ExamCard,StudentName,Location,Grade FROM EXAMSTUDENT WHERE ";
Scanner scanner=new Scanner(System.in);
if (searchType==1){
System.out.print("请输入身份证号:");
String str=scanner.next();
sql=sql+"IDCard="+"'"+str+"'";
}else{
System.out.print("请输入准考证号:");
String str=scanner.next();
sql=sql+"ExamCard"+"'"+str+"'";
}
Student student=getStudent(sql);
return student;
}
private Student getStudent(String sql) {
Student stu=null;
Connection con=null;
Statement statement=null;
ResultSet resultset=null; try{
con=JDBCTools.getConnection();
statement=con.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(statement, con);
}
return stu;
}
private int getSearchTypeFromConsole() {
System.out.println("查询类型:1.根据身份证号查询学生信息 2.根据准考证号查询学生信息 ");
System.out.print("请输入查询类型:");
Scanner scanner=new Scanner(System.in);
int type=scanner.nextInt();
if ((type!=1)&&(type!=2)){
System.out.print("1.根据身份证号查询学生信息 2.根据准考证号查询学生信息.请重新输入查询类型:");
throw new RuntimeException();
}
return type;
}
@Test
public void testAddNewStudent(){
Student student=getStudentFromConsole();
addNewStudent(student);
}
//从控制台输入学生的信息
private Student getStudentFromConsole() {
Scanner scanner=new Scanner(System.in);
Student student=new Student();
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.out.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()+")";
System.out.println(sql);
//2.调用JDBCTools类的update(sql)方法执行插入操作
JDBCTools.update(sql);
}
} wx搜索“程序员考拉”,专注java领域,一个伴你成长的公众号!


以面向对象的思想实现数据表的添加和查询,JDBC代码超详细的更多相关文章

  1. C#基础第七天-作业答案-利用面向对象的思想去实现名片-动态添加

    class Card { private string name; public string Name { get { return name; } set { name = value; } } ...

  2. C#基础第七天-作业-利用面向对象的思想去实现名片-动态添加

    1.利用面向对象的思想去实现: (增加,修改,删除,查询,查询全部)需求:根据人名去(删除/查询).指定列:姓名,年龄,性别,爱好,电话. 多条添加 , 动态添加 名片 本系列教程: C#基础总结之八 ...

  3. 在数据表中添加一个字段的SQL语句怎么写

    如果要在数据表中添加一个字段,应该如何表示呢?下面就为您介绍表添加字段的SQL语句的写法,希望可以让您对SQL语句有更深的认识.   通用式: alter table [表名] add [字段名] 字 ...

  4. php标签云制作——数据表的结构和查询方法

    1.数据表的结构: 创建建两张数据表,结构如下: 标签tag表: 文章mood表: 其中mood表中的tag字段,以tag表的id字段+“,”+tag表的id字段, 2.查询方法: 例如:如果需要某篇 ...

  5. 利用event为z数据表定期添加和删除分区

    我们去年就开始把zabbix数据库改成用TokuDB来支撑,并且启用了表分区(详情见:迁移Zabbix数据库到TokuDB).这样做的好处很明显,较早的历史数据可以通过删除分区快速废弃掉.要知道,za ...

  6. MySQL数据库、数据表和字段字符集查询、修改和配置

    一.设置编码 LINUX  修改vi/etc/my.cnf WINDOWS my.ini 在[client]下添加    default-character-set=utf8 在[mysqld]下添加 ...

  7. T-SQL - 习题02_将数据表year|month|amount查询成year|m1|m2|m3|m4的样式

    时间:2017-09-11 整理:byzqy 题目:有个年度统计表,结构如下: 怎么样把这个表,查询成这样一个结果: 这是在面试过程中遇到的一个关于数据库的题,没有一点思路,不知它考查到的知识点是什么 ...

  8. oracle数据表创建分区与查询

    场景: 遇到1亿数据量的数据需要根据用户名做些数据统计分析,想直接做些聚合计算基本没可能,于是打算先根据日期按照年月创建分区,然后对各个分区分别进行统计,最后汇总结果. 有两种方法,分别是手工设置分区 ...

  9. Entity FrameWork对有外键关联的数据表的添加操作

    前天做了一个MVC Entity FrameWork项目,遇到有外键关联的数据编辑问题.当你编辑的时候,按照正常的逻辑,把每个字段的数据都对号入座了,然后点击保存按钮,本以为会顺理成章的编辑数据,但是 ...

随机推荐

  1. element-ui Table表格结合CheckBox实现单选效果

    最近做项目遇到一个需求,需要实现一个表格的单选,由于项目使用的是element-ui.于是去看了表格的文档,确实有单选的方法,但是官方的单选是直接选中表格行,通过颜色来区分 看着效果不明显,实际需要一 ...

  2. 超详细!CentOS 7 + Hadoop3.0.0 搭建伪分布式集群

    超详细!CentOS 7 + Hadoop3.0.0 搭建伪分布式集群 ps:本文的步骤已自实现过一遍,在正文部分避开了旧版教程在新版使用导致出错的内容,因此版本一致的情况下照搬执行基本不会有大错误. ...

  3. 第八届蓝桥杯JavaB---承压计算

    标题:承压计算 X星球的高科技实验室中整齐地堆放着某批珍贵金属原料. 每块金属原料的外形.尺寸完全一致,但重量不同. 金属材料被严格地堆放成金字塔形. 7 5 8 7 8 8 9 2 7 2 8 1 ...

  4. kinect 2(ubuntu16.04)

    安装libfreenect2 参考 https://github.com/OpenKinect/libfreenect2/blob/master/README.md#linux 如果安装后找不到有关库 ...

  5. memcache面试题汇总

    1,memcached是原子的吗? 所有的被发送到memcached的单个命令是完全原子的.如果您针对同一份数据同时发送了一个set命令和一个get命令,它们不会影响对方.它们将被串行化.先后执行.即 ...

  6. 关于类的成员,public,private修饰符

    类的成员要:属性,方法 属性:是它本身所居有的东西,比如人的特征,也可以这样理解属性是静态状态 方法:是这些属性通过方法行为发生改变,也就是方法是动态,可以对属性进行更新 public 公共的,可以被 ...

  7. 架构师养成记--22.客户端与服务器端保持连接的解决方案,netty的ReadTimeoutHandler

    概述 保持客户端与服务器端连接的方案常用的有3种 1.长连接,也就是客户端与服务器端一直保持连接,适用于客户端比较少的情况. 2.定时段连接,比如在某一天的凌晨建立连接,适用于对实时性要求不高的情况. ...

  8. mac安装gdb调试(转载)

    转载自:http://blog.plotcup.com/a/129 最近一直用go写一个项目,本想在mac上用gdb调试一下,但xcode4.6带的gdb版 本还是太低了,不支持go,只好自己安装一个 ...

  9. windows任务管理器所查的网站

    添加menu   https://blog.csdn.net/u012273127/article/details/71293088 点击菜单打开对话框  https://blog.csdn.net/ ...

  10. Scala IDEA for Eclipse里用maven来创建scala和java项目代码环境(图文详解)

    这篇博客 是在Scala IDEA for Eclipse里手动创建scala代码编写环境. Scala IDE for Eclipse的下载.安装和WordCount的初步使用(本地模式和集群模式) ...