美文网首页Java
以面向对象的思想实现数据表的添加和查询,JDBC代码超详细

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

作者: 考拉考拉啊 | 来源:发表于2020-04-21 12:22 被阅读0次

以面向对象的思想编写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 {@Testpublic 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;}@Testpublic 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代码超详细

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

  • 009-JDBC,防SQL注入

    DBC JDBC的开发步骤 JDBC代码实现 JDBC实现查询 ORM思想 ORM代码实现 ORM的核心代码 抽取...

  • hibernate几种查询方式以及hql使用

    对象导航查询和OID查询代码实现: 2、hql语句查询 普通的sql语句操作数据表和字段,hql操作实体类和属性 ...

  • 设计模式:面向对象

    面向对象编程:以类或对象作为组织代码的基本单元,将封装、抽象、继承、多态,作为代码设计和实现的基石。面向对象编程语...

  • java基础回顾(2)

    面向对象:是基于面向过程的一种思想。 面向过程:以函数为基础,关注实现过程。 面向对象:以对象为基础,关注实现结果...

  • 面向对象--封装性、继承性、多态性

    c++、Java中的面向对象: 面向对象编程思想是以“对象”为中心的,以“对象”为基本单元。可以再对象上添加数...

  • Python day27_mysql与Python交互

    jingdong用户登录注册查询功能的实现 准备数据 创建数据表格 插入数据 操作要求 根据要求写代码 面向函数编程

  • JS高级-继承

    面向对象编程思想:根据需求,分析对象,找到对象有什么特征和行为,通过代码的方式来实现需求,要想实现这个需求,就要创...

  • 面向对象编程思想

    面向对象编程思想:根据需求,分析对象,找到对象有什么特征和行为,通过代码的方式来实现需求,要想实现这个需求,就要创...

  • 类与对象(1) - Class、Object

    面向对象编程思想 Java开发是利用 面向对象 的思想实现 面向过程 的开发。 面向对象编程(OOP:Object...

网友评论

    本文标题:以面向对象的思想实现数据表的添加和查询,JDBC代码超详细

    本文链接:https://www.haomeiwen.com/subject/gukuihtx.html