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

以面向对象的思想编写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(){ }br/>@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<br>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;br/>}
@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 {br/>@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;
br/>}
@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);
}
}

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

原文地址:http://blog.51cto.com/13954634/2326067

时间: 2024-10-20 16:34:46

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

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

如果要在数据表中添加一个字段,应该如何表示呢?下面就为您介绍表添加字段的SQL语句的写法,希望可以让您对SQL语句有更深的认识. 通用式: alter table [表名] add [字段名] 字段属性 default 缺省值 default 是可选参数 增加字段: alter table [表名] add 字段名 smallint default 0 增加数字字段,整型,缺省值为0 alter table [表名] add 字段名 int default 0 增加数字字段,长整型,缺省值为0

InterviewQuestion_SQLServer_Probl_将数据表year|month|amount查询成year|m1|m2|m3|m4的样式

题目:有个年度统计表,结构如下: 怎么样把这个表,查询成这样一个结果: 这是在面试过程中遇到的一个关于数据库的题,没有一点思路,不知它考查到的知识点是什么,如何下手? 网上搜了一下,有哥们儿说这是典型的"行转列问题",好像用到"交叉表查询",下面看看具体的代码! 文件:SQLQuery1.sql /* 环境:Microsoft SQL Server 2012 工具: Microsoft SQL Server Management Studio 数据库: Interv

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

1.数据表的结构: 创建建两张数据表,结构如下: 标签tag表: 文章mood表: 其中mood表中的tag字段,以tag表的id字段+“,”+tag表的id字段, 2.查询方法: 例如:如果需要某篇文章中包含tag表中的id为1,2,3的tagname,也就是id为1,2,3的标签, 则在添加文章的时候用 $result=implode(",", $_POST['tagid']);//把获取的checkbox的数组用逗号进行分割 $_POST['tagid']为获取前台的复选框的数组

数据库、数据表的基本操作及查询数据

数据库的基本操作 创建数据库 CREATE DATABASE database_name database_name为要创建的数据库的名称 删除数据库 DROP DATABASE database_name database_name为要删除的数据库的名称 数据库存储引擎 数据库存储引擎是数据库底层软件组成,数据库管理系统(DBMS)使用数据引擎进行创建.查询.更新和删除数据操作. MySQL的核心就是存储引擎. 存储引擎比较 |功能|MyISAM|Memory|InnoDB|Archive|

php学习day11---数据库(3)数据表的增删改查

今天我们学习了数据表的相关操作,以下是笔记. 一.数据操作语言 1.增添数据 在数据表中添加数据有多种的语法形式 形式1:insert [into] table_name [(字段1,字段2,字段3......)] values (值1,值2,值3......),(......),(......)......;  形式2:replace [into] table_name [(字段1,字段2,字段3......)] values (值1,值2,值3......),(......),(......

MySQL查询数据表中数据记录(包括多表查询)

MySQL查询数据表中数据记录(包括多表查询) MySQL查询数据表中数据记录(包括多表查询) 转自:http://www.baike369.com/content/?id=5355 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: select selection_list // 要查询的内容,选择哪些列 from table_list // 从什么表中查询,从何处选择行 where primary_

JDBC:以面向对象的思想编写JDBC程序

题目简述: 向数据表中添加学生信息,并且可以通过身份证号准考证来查询学生信息. Name        Type         Nullable Default Comments ----------- ------------ -------- ------- -------- IDCARD      NUMBER(10)   Y EXAMCARD    NUMBER(10)   Y STUDENTNAME VARCHAR2(20) Y LACATION    VARCHAR2(20) Y

数据表的创建

表的创建属于DDL(数据定义语言)范畴.每创建的数据表或者是表中的列都属于数据库之中的对象,表对象的创建语法以: CREATE TABLE为主进行定义. 1.表的创建语法如下: 2.对表名称及列名称的定义要求如下: (a)必须以字母开头 (b)长度为 1 -- 30 个字符 (c)表名称由字母(A-Z . a-z) . 数字(0 - 9) . _   $  .# 组成,而且名称要有意义. (d)对同一个用户不能使用相同的表名称 (e)不能是Oracle中的保留字,像CREATE . SELECT

SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型

原文:SQL Server 2008空间数据应用系列五:数据表中使用空间数据类型 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. 2.具备 Transact-SQL 编程经验和使用 SQL Server Management Studio 的经验. 3.熟悉或了解Microsoft SQL Server 2008中的空间数据类型. 4.具备相应(比如OGC)的GIS专业理论知识. 5.其他相关知识. 通过前面几篇文章介绍了