我没完全按照题目写

是这样:一开始没认真读题,只按照学生信息表做了所有字段上的数据的增删改查,然后发现还要创建一个学生成绩表。。。。感觉如果再建个表重新再写增删改查有点麻烦。。。就只是在对学生信息表的操作上加上修改字段的功能,增加一个成绩字段,实现在没有增加成绩字段的时候能够对表中数据进行增删改查,增加成绩字段以后依然可以对包含成绩字段的学生信息表进行增删改查,同时增加对成绩的统计功能,而对于没有成绩字段的原始表格,当调用成绩统计功能的时候会得到相应的反馈然后退出此功能

实验题目

实验七 数据库应用
实验目的:了解数据库系统、关系模型、客户-服务器模式等基本概念,掌握SQL的数据定义、数据操纵和数据查询等语句的语法;了解JDBC各种数据库驱动程序类型,熟悉JDBC提供的接口和类,掌握指定驱动类型、连接数据库、执行SQL语句、处理结果集等操作方法。
实验内容:
数据库应用程序
1)首先在数据库应用程序中创建数据库Studentinfo,按照下表的结构在数据库中建立"student"表。
字段名 Java数据类型 宽度 SQL数据类型
Name String 10 Char(10)
Sex String 2 Char(2)
Age Int 3 Integer
2)编写程序,
a)向"student"表中填入若干数据记录;
b)在"student"表中分别查询所有记录以及满足条件"age>18"的记录。
c)编程创建学生成绩表,并进行数据插入、修改、删除、查询和成绩统计等操作。
注:不限定数据库类型,

实验结果

没有插入成绩字段前(不使用自定义的SQL语句)

1、数据查询(没有插入成绩字段前)

****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
1
*****1、查询全表数据*****
*****2、单个参数查询*****
*****3、输入语句查询*****
1
name	sex	age	
ALAN	M	15	
friend	m	15	
frank	m	16	
java	m	25	
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
1
*****1、查询全表数据*****
*****2、单个参数查询*****
*****3、输入语句查询*****
2
当前字段有:
name	sex	age	
*****1、按姓名查询*****
*****2、按性别查询*****
*****3、按年龄查询*****
1
请输入姓名:
ALAN
name	sex	age	
ALAN	M	15	
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
1
*****1、查询全表数据*****
*****2、单个参数查询*****
*****3、输入语句查询*****
2
当前字段有:
name	sex	age	
*****1、按姓名查询*****
*****2、按性别查询*****
*****3、按年龄查询*****
2
请输入性别:
m
name	sex	age	
friend	m	15	
frank	m	16	
java	m	25	
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
1
*****1、查询全表数据*****
*****2、单个参数查询*****
*****3、输入语句查询*****
2
当前字段有:
name	sex	age	
*****1、按姓名查询*****
*****2、按性别查询*****
*****3、按年龄查询*****
3
请输入年龄:
25
name	sex	age	
java	m	25	
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********

2、数据插入

****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
1
*****1、查询全表数据*****
*****2、单个参数查询*****
*****3、输入语句查询*****
1
name	sex	age	
ALAN	M	15	
friend	m	15	
frank	m	16	
java	m	25	
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
2
*****1、输入具体SQL语句进行数据插入*****
*****2、输入字段参数进行数据插入   *****
2
当前字段有:
name	sex	age	
请输入要插入数据的内容
***Name***Sex***Age***
idea fm 15
插入新记录完成,现在该表的数据如下:
name	sex	age	
ALAN	M	15	
friend	m	15	
frank	m	16	
java	m	25	
idea	fm	15	
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********

3、数据修改

****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
1
*****1、查询全表数据*****
*****2、单个参数查询*****
*****3、输入语句查询*****
1
name	sex	age	
ALAN	M	15	
friend	m	15	
frank	m	16	
java	m	25	
idea	fm	15	
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
3
*****1、输入具体SQL语句进行数据修改*****
*****2、输入字段参数进行数据修改   *****
2
当前字段有:
name	sex	age	
*****1、只改名字*****
*****2、只改性别*****
*****3、只改年龄*****
1
*****name_new*****name_old*****
输入参数:
IDEA idea
修改记录完成,现在该表的数据如下:
name	sex	age	
ALAN	M	15	
friend	m	15	
frank	m	16	
java	m	25	
IDEA	fm	15	
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
3
*****1、输入具体SQL语句进行数据修改*****
*****2、输入字段参数进行数据修改   *****
2
当前字段有:
name	sex	age	
*****1、只改名字*****
*****2、只改性别*****
*****3、只改年龄*****
2
*****sex_new*****name*****
输入参数:
fm IDEA
修改记录完成,现在该表的数据如下:
name	sex	age	
ALAN	M	15	
friend	m	15	
frank	m	16	
java	m	25	
IDEA	fm	15	
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
3
*****1、输入具体SQL语句进行数据修改*****
*****2、输入字段参数进行数据修改   *****
2
当前字段有:
name	sex	age	
*****1、只改名字*****
*****2、只改性别*****
*****3、只改年龄*****
3
*****age_new*****name*****
输入参数:
29 IDEA
修改记录完成,现在该表的数据如下:
name	sex	age	
ALAN	M	15	
friend	m	15	
frank	m	16	
java	m	25	
IDEA	fm	29	
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********

4、数据删除

****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
1
*****1、查询全表数据*****
*****2、单个参数查询*****
*****3、输入语句查询*****
1
name	sex	age	
ALAN	M	15	
friend	m	15	
java	m	25	
IDEA	fm	29	
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
4
*****1、输入具体SQL语句进行数据删除*****
*****2、输入字段参数进行数据删除   *****
2
输入姓名,删除该行
friend
删除记录完成,现在该表的数据如下:
name	sex	age	
ALAN	M	15	
java	m	25	
IDEA	fm	29	
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********

插入成绩字段

1、插入成绩字段

****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
5
*****插入或修改字段*****
当前字段有:
name	sex	age	
请输入SQL语句:
alter table student_x add score int;
插入或修改字段完成,现在该表的数据如下:
name	sex	age	score	
ALAN	M	15	0	
friend	m	15	0	
frank	m	16	0	
java	m	25	0	
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********

2、删除成绩字段

****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
5
*****插入或修改字段*****
当前字段有:
name	sex	age	score	
请输入SQL语句:
alter table student_x drop score;
插入或修改字段完成,现在该表的数据如下:
name	sex	age	
ALAN	M	15	
friend	m	15	
frank	m	16	
java	m	25	
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********

插入成绩字段前不允许进行成绩统计

****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
6
当前字段有:
name	sex	age	
不存在score字段,无法进行成绩统计
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********

插入成绩字段后(不使用自定义输入的SQL语句)

1、数据查询

****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
1
*****1、查询全表数据*****
*****2、单个参数查询*****
*****3、输入语句查询*****
1
name	sex	age	score	
ALAN	M	15	25	
friend	m	15	0	
frank	m	16	0	
java	m	25	98	
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
1
*****1、查询全表数据*****
*****2、单个参数查询*****
*****3、输入语句查询*****
2
当前字段有:
name	sex	age	score	
*****1、按姓名查询*****
*****2、按性别查询*****
*****3、按年龄查询*****
*****4、按成绩查询*****
4
请输入成绩:
98
name	sex	age	score	
java	m	25	98	
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********

2、数据插入

****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
2
*****1、输入具体SQL语句进行数据插入*****
*****2、输入字段参数进行数据插入   *****
2
当前字段有:
name	sex	age	score	
请输入要插入数据的内容
***Name***Sex***Age***Score
idea fm 15 90
插入新记录完成,现在该表的数据如下:
name	sex	age	score	
ALAN	M	15	25	
friend	m	15	0	
frank	m	16	0	
java	m	25	98	
idea	fm	15	90	
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********

3、数据修改

****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
3
*****1、输入具体SQL语句进行数据修改*****
*****2、输入字段参数进行数据修改   *****
2
当前字段有:
name	sex	age	score	
*****1、只改名字*****
*****2、只改性别*****
*****3、只改年龄*****
*****4、只改成绩*****
4
*****score_new*****name*****
输入参数:
85 idea
修改记录完成,现在该表的数据如下:
name	sex	age	score	
ALAN	M	15	25	
friend	m	15	0	
frank	m	16	0	
java	m	25	98	
idea	fm	15	85	
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********

4、数据删除

****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
4
*****1、输入具体SQL语句进行数据删除*****
*****2、输入字段参数进行数据删除   *****
2
输入姓名,删除该行
idea
删除记录完成,现在该表的数据如下:
name	sex	age	score	
ALAN	M	15	25	
friend	m	15	0	
frank	m	16	0	
java	m	25	98	
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********

5、成绩统计

****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
6
当前字段有:
name	sex	age	score	
存在score字段,选择成绩统计方法:
******1、成绩份数******
******2、成绩总和******
******3、平均成绩******
******4、最高成绩******
******5、最低成绩******
1
COUNT(score)	
2
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
6
当前字段有:
name	sex	age	score	
存在score字段,选择成绩统计方法:
******1、成绩份数******
******2、成绩总和******
******3、平均成绩******
******4、最高成绩******
******5、最低成绩******
2
SUM(score)	
123
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
6
当前字段有:
name	sex	age	score	
存在score字段,选择成绩统计方法:
******1、成绩份数******
******2、成绩总和******
******3、平均成绩******
******4、最高成绩******
******5、最低成绩******
3
AVG(score)	
61
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
6
当前字段有:
name	sex	age	score	
存在score字段,选择成绩统计方法:
******1、成绩份数******
******2、成绩总和******
******3、平均成绩******
******4、最高成绩******
******5、最低成绩******
4
MAX(score)	
98
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
6
当前字段有:
name	sex	age	score	
存在score字段,选择成绩统计方法:
******1、成绩份数******
******2、成绩总和******
******3、平均成绩******
******4、最高成绩******
******5、最低成绩******
5
MIN(score)	
25
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********

使用自定义输入的SQL语句进行增删改查

****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
1
*****1、查询全表数据*****
*****2、单个参数查询*****
*****3、输入语句查询*****
3
请输入SQL语句:
select score from student_x;
score	
30	
80	
100	
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
2
*****1、输入具体SQL语句进行数据插入*****
*****2、输入字段参数进行数据插入   *****
1
当前字段有:
name	sex	age	score	
请输入SQL语句:
insert into student_x values('java16','fm',25,60);
插入新记录完成,现在该表的数据如下:
name	sex	age	score	
ALAN	M	15	30	
java	m	25	80	
IDEA	fm	29	100	
java16	fm	25	60	
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
3
*****1、输入具体SQL语句进行数据修改*****
*****2、输入字段参数进行数据修改   *****
1
当前字段有:
name	sex	age	score	
请输入SQL语句:
update student_x set name='jdk16' where score=60;
修改记录完成,现在该表的数据如下:
name	sex	age	score	
ALAN	M	15	30	
java	m	25	80	
IDEA	fm	29	100	
jdk16	fm	25	60	
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********
4
*****1、输入具体SQL语句进行数据删除*****
*****2、输入字段参数进行数据删除   *****
1
当前字段有:
name	sex	age	score	
请输入SQL语句:
delete from student_x where score=60;
删除记录完成,现在该表的数据如下:
name	sex	age	score	
ALAN	M	15	30	
java	m	25	80	
IDEA	fm	29	100	
****************选项****************
********1、数据查询********
********2、数据插入********
********3、数据修改********
********4、数据删除********
********5、修改字段********
********6、成绩统计********
********7、退出系统********

源代码

Main类,程序开始于执行Main类的main方法

package EX7;

import java.util.Scanner;

/**
 * @author 15328
 */
public class Main {

    protected String string_sql;
    protected String forname;
    protected String url;
    protected String user;
    protected String password;

    protected static final String string_sql_x = "select * from student_x";
    protected static final String forname_x = "com.mysql.cj.jdbc.Driver";
    protected static final String url_x = "jdbc:mysql://localhost:3306/test_db";
    protected static final String user_x = "root";
    protected static final String password_x = "123456";

    public Main(String string_sql, String forname, String url, String user, String password) {
        this.string_sql = string_sql;
        this.forname = forname;
        this.url = url;
        this.user = user;
        this.password = password;
    }


    public static void main(String[] args) throws Exception {
        /**查询对象,用于查询全表*/
        StatementExcute statementExcute = new StatementExcute(
                "select * from student_x", forname_x,url_x,user_x,password_x);

        PreparedStatementExecuteInsert preparedStatementExecuteInsert = new PreparedStatementExecuteInsert(
                "insert into student_x values(?,?,?);",forname_x, url_x,user_x,password_x);

        PreparedStatementExecuteInsert preparedStatementExecuteInsert1 = new PreparedStatementExecuteInsert(
                "insert into student_x values(?,?,?,?);",forname_x, url_x,user_x,password_x);

        StatementExcuteUpdate statementExcuteUpdate = new StatementExcuteUpdate(
                "", forname_x,url_x,user_x,password_x);

        PreparedStatementExecuteDelete preparedStatementExecuteDelete = new PreparedStatementExecuteDelete(
                "delete from student_x where name=?;", forname_x,url_x,user_x,password_x);


        PreparedStatementExcuteUpdate preparedStatementExcuteUpdate1 = new PreparedStatementExcuteUpdate(
                "update student_x set name=? where name=?",forname_x, url_x,user_x,password_x);
        PreparedStatementExcuteUpdate preparedStatementExcuteUpdate2 = new PreparedStatementExcuteUpdate(
                "update student_x set sex=? where name=?",forname_x, url_x,user_x,password_x);
        PreparedStatementExcuteUpdate preparedStatementExcuteUpdate3 = new PreparedStatementExcuteUpdate(
                "update student_x set age=? where name=?",forname_x, url_x,user_x,password_x);
        PreparedStatementExcuteUpdate preparedStatementExcuteUpdate4 = new PreparedStatementExcuteUpdate(
                "update student_x set score=? where name=?",forname_x, url_x,user_x,password_x);


        PreparedStatmentExecute preparedStatmentExecute1 = new PreparedStatmentExecute(
                "select * from student_x where name=?;",forname_x, url_x,user_x,password_x);
        PreparedStatmentExecute preparedStatmentExecute2 = new PreparedStatmentExecute(
                "select * from student_x where sex=?;",forname_x, url_x,user_x,password_x);
        PreparedStatmentExecute preparedStatmentExecute3 = new PreparedStatmentExecute(
                "select * from student_x where age=?;",forname_x, url_x,user_x,password_x);
        PreparedStatmentExecute preparedStatmentExecute4 = new PreparedStatmentExecute(
                "select * from student_x where score=?;",forname_x, url_x,user_x,password_x);

        operate(statementExcute,
                preparedStatementExecuteInsert,
                preparedStatementExecuteInsert1,
                statementExcuteUpdate,
                preparedStatementExecuteDelete,
                preparedStatementExcuteUpdate1,
                preparedStatementExcuteUpdate2,
                preparedStatementExcuteUpdate3,
                preparedStatementExcuteUpdate4,
                preparedStatmentExecute1,
                preparedStatmentExecute2,
                preparedStatmentExecute3,
                preparedStatmentExecute4);
    }
    public static void show_all_table(StatementExcute statementExcute) throws Exception {
        statementExcute.statementexcute("");
    }
    public static void show_one_table(PreparedStatmentExecute preparedStatmentExecute1,
                                      PreparedStatmentExecute preparedStatmentExecute2,
                                      PreparedStatmentExecute preparedStatmentExecute3,
                                      PreparedStatmentExecute preparedStatmentExecute4,
                                      StatementExcute statementExcute) throws Exception {
        System.out.println("当前字段有:");
        int count = statementExcute.show_all_classname();
        Scanner input = new Scanner(System.in);
        System.out.println("*****1、按姓名查询*****");
        System.out.println("*****2、按性别查询*****");
        System.out.println("*****3、按年龄查询*****");
        if(count==4)
        {
            System.out.println("*****4、按成绩查询*****");
        }
        int judge_select = input.nextInt();
        input.nextLine();
        switch (judge_select){
            case 1:{
                System.out.println("请输入姓名:");
                String name = input.next();
                input.nextLine();
                preparedStatmentExecute1.preparedstatementexecute1(name);
                break;
            }
            case 2:{
                System.out.println("请输入性别:");
                String sex = input.next();
                input.nextLine();
                preparedStatmentExecute2.preparedstatementexecute1(sex);
                break;
            }
            case 3:{
                System.out.println("请输入年龄:");
                int age = input.nextInt();
                input.nextLine();
                preparedStatmentExecute3.preparedstatementexecute2(age);
                break;
            }
            case 4:{
                if(count!=4){
                    System.out.println("非法输入");
                    break;
                }
                System.out.println("请输入成绩:");
                int score = input.nextInt();
                input.nextLine();
                preparedStatmentExecute4.preparedstatementexecute2(score);
                break;
            }
            default:{
                System.out.println("非法输入");
                break;
            }
        }
    }
    public static void show_table(StatementExcute statementExcute,
                                  PreparedStatmentExecute preparedStatmentExecute1,
                                  PreparedStatmentExecute preparedStatmentExecute2,
                                  PreparedStatmentExecute preparedStatmentExecute3,
                                  PreparedStatmentExecute preparedStatmentExecute4) throws Exception {
        Scanner input = new Scanner(System.in);
        System.out.println("*****1、查询全表数据*****");
        System.out.println("*****2、单个参数查询*****");
        System.out.println("*****3、输入语句查询*****");
        int judge_select = input.nextInt();
        input.nextLine();
        switch(judge_select){
            case 1: {
                show_all_table(statementExcute);
                break;
            }
            case 2:{
                show_one_table(preparedStatmentExecute1,preparedStatmentExecute2,
                        preparedStatmentExecute3,preparedStatmentExecute4,statementExcute);
                break;
            }
            case 3:{
                show_one_table_inSQL(statementExcute);
                break;
            }
            default:{
                System.out.println("非法输入");
                break;
            }
        }
    }

    public static void show_one_table_inSQL(StatementExcute statementExcute) throws Exception{
        Scanner input = new Scanner(System.in);
        System.out.println("请输入SQL语句:");
        String sql = input.nextLine();
        statementExcute.string_sql = "";
        statementExcute.statementexcute(sql);
        statementExcute.string_sql = string_sql_x;
    }

    public static void insert_one(PreparedStatementExecuteInsert preparedStatementExecuteInsert
    ,PreparedStatementExecuteInsert preparedStatementExecuteInsert1,StatementExcute statementExcute) throws Exception {
        Scanner input = new Scanner(System.in);
        System.out.println("当前字段有:");
        int count = statementExcute.show_all_classname();
        System.out.println("请输入要插入数据的内容");
        if(count==3)
        {
            System.out.println("***Name***Sex***Age***");
            String name = input.next();
            String sex = input.next();
            int age = input.nextInt();
            input.nextLine();
            preparedStatementExecuteInsert.preparedstatementexecuteinsert(name,sex,age);
        }
        if(count==4)
        {
            System.out.println("***Name***Sex***Age***Score");
            String name = input.next();
            String sex = input.next();
            int age = input.nextInt();
            int score =input.nextInt();
            input.nextLine();
            preparedStatementExecuteInsert1.preparedstatementexecuteinsert1(name,sex,age,score);
        }
    }

    public static void do_one_in_SQL(StatementExcuteUpdate statementExcuteUpdate,StatementExcute statementExcute) throws Exception{
        Scanner input = new Scanner(System.in);
        System.out.println("当前字段有:");
        statementExcute.show_all_classname();
        System.out.println("请输入SQL语句:");
        String sql = input.nextLine();
        statementExcuteUpdate.statementexcuteupdate(sql);
    }

    public static void update_one(PreparedStatementExcuteUpdate preparedStatementExcuteUpdate1,
                                  PreparedStatementExcuteUpdate preparedStatementExcuteUpdate2,
                                  PreparedStatementExcuteUpdate preparedStatementExcuteUpdate3,
                                  PreparedStatementExcuteUpdate preparedStatementExcuteUpdate4,
                                  StatementExcute statementExcute) throws Exception{
        Scanner input = new Scanner(System.in);
        System.out.println("当前字段有:");
        int count = statementExcute.show_all_classname();
        System.out.println("*****1、只改名字*****");
        System.out.println("*****2、只改性别*****");
        System.out.println("*****3、只改年龄*****");
        if(count==4)
        {
            System.out.println("*****4、只改成绩*****");
        }
        int judge_u = input.nextInt();
        input.nextLine();
        switch (judge_u){
            case 1:{
                System.out.println("*****name_new*****name_old*****");
                System.out.println("输入参数:");
                String name_new = input.next();
                String name_old = input.next();
                input.nextLine();
                preparedStatementExcuteUpdate1.preparedstatementexecuteupdate(name_new,name_old);
                break;
            }
            case 2:{
                System.out.println("*****sex_new*****name*****");
                System.out.println("输入参数:");
                String sex_new = input.next();
                String name_s = input.next();
                input.nextLine();
                preparedStatementExcuteUpdate2.preparedstatementexecuteupdate(sex_new,name_s);
                break;
            }
            case 3:{
                System.out.println("*****age_new*****name*****");
                System.out.println("输入参数:");
                int age_new = input.nextInt();
                String name_a = input.next();
                input.nextLine();
                preparedStatementExcuteUpdate3.prepreparedstatementexecuteupdate2(age_new,name_a);
                break;
            }
            case 4:{
                if(count==3){
                    System.out.println("非法输入");
                    break;
                }
                System.out.println("*****score_new*****name*****");
                System.out.println("输入参数:");
                int score_new = input.nextInt();
                String name_a = input.next();
                input.nextLine();
                preparedStatementExcuteUpdate4.prepreparedstatementexecuteupdate2(score_new,name_a);
                break;
            }
            default:{
                System.out.println("非法输入");
                break;
            }
        }
    }

    public static void delete_one(PreparedStatementExecuteDelete preparedStatementExecuteDelete) throws Exception {
        Scanner input = new Scanner(System.in);
        System.out.println("输入姓名,删除该行");
        String name = input.next();
        input.nextLine();
        preparedStatementExecuteDelete.preparedstatementexecutedelete(name);
    }



    public static void operate(StatementExcute statementExcute,
                               PreparedStatementExecuteInsert preparedStatementExecuteInsert,
                               PreparedStatementExecuteInsert preparedStatementExecuteInsert1,
                               StatementExcuteUpdate statementExcuteUpdate,
                               PreparedStatementExecuteDelete preparedStatementExecuteDelete,
                               PreparedStatementExcuteUpdate preparedStatementExcuteUpdate1,
                               PreparedStatementExcuteUpdate preparedStatementExcuteUpdate2,
                               PreparedStatementExcuteUpdate preparedStatementExcuteUpdate3,
                               PreparedStatementExcuteUpdate preparedStatementExcuteUpdate4,
                               PreparedStatmentExecute preparedStatmentExecute1,
                               PreparedStatmentExecute preparedStatmentExecute2,
                               PreparedStatmentExecute preparedStatmentExecute3,
                               PreparedStatmentExecute preparedStatmentExecute4) throws Exception {
        Scanner input = new Scanner(System.in);
        while(true){
            System.out.println("****************选项****************");
            System.out.println("********1、数据查询********");
            System.out.println("********2、数据插入********");
            System.out.println("********3、数据修改********");
            System.out.println("********4、数据删除********");
            System.out.println("********5、修改字段********");
            System.out.println("********6、成绩统计********");
            System.out.println("********7、退出系统********");
            int x = input.nextInt();
            input.nextLine();
            if(x==7){
                break;
            }
            switch(x){
                case 1:{
                    show_table(statementExcute,
                            preparedStatmentExecute1,
                            preparedStatmentExecute2,
                            preparedStatmentExecute3,
                            preparedStatmentExecute4);
                    break;
                }
                case 2:{
                    System.out.println("*****1、输入具体SQL语句进行数据插入*****");
                    System.out.println("*****2、输入字段参数进行数据插入   *****");
                    int judge = input.nextInt();
                    if(judge == 2){
                        insert_one(preparedStatementExecuteInsert,preparedStatementExecuteInsert1,statementExcute);
                    }
                    else{
                        do_one_in_SQL(statementExcuteUpdate,statementExcute);
                    }
                    System.out.println("插入新记录完成,现在该表的数据如下:");
                    show_all_table(statementExcute);
                    break;
                }
                case 3:{
                    System.out.println("*****1、输入具体SQL语句进行数据修改*****");
                    System.out.println("*****2、输入字段参数进行数据修改   *****");
                    int judge = input.nextInt();
                    if(judge == 2){
                        update_one(preparedStatementExcuteUpdate1,
                                preparedStatementExcuteUpdate2,
                                preparedStatementExcuteUpdate3,
                                preparedStatementExcuteUpdate4,
                                statementExcute);
                    }
                    else{
                        do_one_in_SQL(statementExcuteUpdate,statementExcute);
                    }
                    System.out.println("修改记录完成,现在该表的数据如下:");
                    show_all_table(statementExcute);
                    break;
                }
                case 4:{
                    System.out.println("*****1、输入具体SQL语句进行数据删除*****");
                    System.out.println("*****2、输入字段参数进行数据删除   *****");
                    int judge = input.nextInt();
                    if(judge == 2){
                        delete_one(preparedStatementExecuteDelete);
                    }
                    else{
                        do_one_in_SQL(statementExcuteUpdate,statementExcute);
                    }
                    System.out.println("删除记录完成,现在该表的数据如下:");
                    show_all_table(statementExcute);
                    break;
                }
                case 5:{
                    System.out.println("*****插入或修改字段*****");
                    do_one_in_SQL(statementExcuteUpdate,statementExcute);
                    System.out.println("插入或修改字段完成,现在该表的数据如下:");
                    show_all_table(statementExcute);
                    break;
                }
                case 6:{
                    System.out.println("当前字段有:");
                    int count = statementExcute.show_all_classname();
                    if(count == 4){
                        System.out.println("存在score字段,选择成绩统计方法:");
                        System.out.println("******1、成绩份数******");
                        System.out.println("******2、成绩总和******");
                        System.out.println("******3、平均成绩******");
                        System.out.println("******4、最高成绩******");
                        System.out.println("******5、最低成绩******");
                        int judge = input.nextInt();
                        input.nextLine();
                        switch (judge){
                            case 1:{
                                StatementExcute statementExcute5 = new StatementExcute(
                                        "SELECT COUNT(score) FROM student_x;",forname_x, url_x,user_x,password_x);
                                statementExcute5.count("");
                                break;
                            }
                            case 2:{
                                StatementExcute statementExcute5 = new StatementExcute(
                                        "SELECT SUM(score) FROM student_x;",forname_x, url_x,user_x,password_x);
                                statementExcute5.count("");
                                break;
                            }
                            case 3:{
                                StatementExcute statementExcute5 = new StatementExcute(
                                        "SELECT AVG(score) FROM student_x;",forname_x, url_x,user_x,password_x);
                                statementExcute5.count("");
                                break;
                            }
                            case 4:{
                                StatementExcute statementExcute5 = new StatementExcute(
                                        "SELECT MAX(score) FROM student_x;",forname_x, url_x,user_x,password_x);
                                statementExcute5.count("");
                                break;
                            }
                            case 5:{
                                StatementExcute statementExcute5 = new StatementExcute(
                                        "SELECT MIN(score) FROM student_x;",forname_x, url_x,user_x,password_x);
                                statementExcute5.count("");
                                break;
                            }
                            default:{
                                System.out.println("非法输入");
                                break;
                            }
                        }
                    }
                    if(count == 3){
                        System.out.println("不存在score字段,无法进行成绩统计");
                    }
                    break;
                }
                default:{
                    System.out.println("非法输入");
                    break;
                }
            }
        }
    }
}

按参数查询:PreparedStatmentExecute


package EX7;

import java.sql.*;


/**
 * @author 15328
 */
public class PreparedStatmentExecute extends Main {
    public PreparedStatmentExecute(String string_sql, String forname, String url, String user, String password) {
        super(string_sql, forname, url, user, password);
    }

    //这个类的main只提供单个类的功能测试,与整个程序的功能无关
    public static void main(String[] args) throws Exception{
        PreparedStatmentExecute preparedStatementExecute = new PreparedStatmentExecute(
                "select * from student_x where name=?;",forname_x,
                url_x,user_x,password_x);

    }

    public void preparedstatementexecute1(String name_sex) throws Exception{
        Class.forName(this.forname);

        Connection connection = DriverManager.getConnection(this.url,this.user,this.password);

        PreparedStatement preparedStatement = connection.prepareStatement(this.string_sql);


        preparedStatement.setString(1,name_sex);

        boolean hasResultSet = preparedStatement.execute();

        if(hasResultSet){
            ResultSet resultSet = preparedStatement.getResultSet();
            ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
            for(int i=1;i<=resultSetMetaData.getColumnCount();i++){
                System.out.print(resultSetMetaData.getColumnName(i)+"\t");
            }
            System.out.println();
            while(resultSet.next()){
                String show ="";
                for(int i=1;i<=resultSetMetaData.getColumnCount();i++){
                    if("java.lang.String".equals(resultSetMetaData.getColumnClassName(i))){
                        show += resultSet.getString(i) + "\t";
                    }
                    if("java.lang.Integer".equals(resultSetMetaData.getColumnClassName(i))){
                        show += resultSet.getInt(i) + "\t";
                    }
                }
                System.out.println(show);
            }
            if(resultSet !=null){
                resultSet.close();
            }
        }
        if(preparedStatement != null){
            preparedStatement.close();
        }
        if(connection != null){
            connection.close();
        }
    }

    public void preparedstatementexecute2(int age_score) throws Exception{
        Class.forName(this.forname);

        Connection connection = DriverManager.getConnection(this.url,this.user,this.password);

        PreparedStatement preparedStatement = connection.prepareStatement(this.string_sql);

        preparedStatement.setInt(1,age_score);

        boolean hasResultSet = preparedStatement.execute();

        if(hasResultSet){
            ResultSet resultSet = preparedStatement.getResultSet();
            ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
            for(int i=1;i<=resultSetMetaData.getColumnCount();i++){
                System.out.print(resultSetMetaData.getColumnName(i)+"\t");
            }
            System.out.println();
            while(resultSet.next()){
                String show ="";
                for(int i=1;i<=resultSetMetaData.getColumnCount();i++){
                    if("java.lang.String".equals(resultSetMetaData.getColumnClassName(i))){
                        show += resultSet.getString(i) + "\t";
                    }
                    if("java.lang.Integer".equals(resultSetMetaData.getColumnClassName(i))){
                        show += resultSet.getInt(i) + "\t";
                    }
                }
                System.out.println(show);
            }
            if(resultSet !=null){
                resultSet.close();
            }
        }
        if(preparedStatement != null){
            preparedStatement.close();
        }
        if(connection != null){
            connection.close();
        }
    }
}

按参数修改 :PreparedStatementExcuteUpdate

package EX7;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

/**
 * @author 15328
 */
public class PreparedStatementExcuteUpdate extends Main{
    public PreparedStatementExcuteUpdate(String string_sql, String forname, String url, String user, String password) {
        super(string_sql, forname, url, user, password);
    }

    //这个类的main只提供单个类的功能测试,与整个程序的功能无关
    public static void main(String[] args) throws Exception{
        PreparedStatementExcuteUpdate preparedStatementExcuteUpdate = new PreparedStatementExcuteUpdate(
                "update student_x set sex=? where name=?",forname_x,
                url_x,user_x,password_x);
        preparedStatementExcuteUpdate.preparedstatementexecuteupdate("","");
    }

    public void preparedstatementexecuteupdate(String sql1,String sql2) throws Exception{
        Class.forName(this.forname);

        Connection connection = DriverManager.getConnection(this.url,this.user,this.password);

        PreparedStatement preparedStatement = connection.prepareStatement(this.string_sql);

        preparedStatement.setString(1,sql1);
        preparedStatement.setString(2,sql2);

        preparedStatement.executeUpdate();

        if(preparedStatement != null) {
            preparedStatement.close();
        }
        if(connection != null) {
            connection.close();
        }

    }

    public void prepreparedstatementexecuteupdate2(int sql1,String sql2) throws Exception{
        Class.forName(this.forname);

        Connection connection = DriverManager.getConnection(this.url,this.user,this.password);

        PreparedStatement preparedStatement = connection.prepareStatement(this.string_sql);

        preparedStatement.setInt(1,sql1);
        preparedStatement.setString(2,sql2);

        preparedStatement.executeUpdate();

        if(preparedStatement != null) {
            preparedStatement.close();
        }
        if(connection != null) {
            connection.close();
        }

    }
}


按参数删除:PreparedStatementExecuteDelete

package EX7;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;


/**
 * @author 15328
 */
public class PreparedStatementExecuteDelete extends Main{
    public PreparedStatementExecuteDelete(String string_sql, String forname, String url, String user, String password) {
        super(string_sql, forname, url, user, password);
    }

    //这个类的main只提供单个类的功能测试,与整个程序的功能无关
    public static void main(String[] args) throws Exception{
        PreparedStatementExecuteDelete preparedStatementExecuteDelete = new PreparedStatementExecuteDelete(
                "delete from student_x where name=?;",forname_x,
                url_x,user_x,password_x);
        preparedStatementExecuteDelete.preparedstatementexecutedelete("");
    }

    public void preparedstatementexecutedelete(String sql)throws Exception{
        Class.forName(this.forname);

        Connection connection = DriverManager.getConnection(this.url,this.user,this.password);

        PreparedStatement preparedStatement = connection.prepareStatement(this.string_sql);

        preparedStatement.setString(1,sql);

        preparedStatement.executeUpdate();

        if(preparedStatement != null) {
            preparedStatement.close();
        }
        if(connection != null) {
            connection.close();
        }

    }
}


按参数插入 :PreparedStatementExecuteInsert

package EX7;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

/**
 * @author 15328
 */
public class PreparedStatementExecuteInsert extends Main{
    public PreparedStatementExecuteInsert(String string_sql, String forname, String url, String user, String password) {
        super(string_sql, forname, url, user, password);
    }

    //这个类的main只提供单个类的功能测试,与整个程序的功能无关
    public static void main(String[] args) throws Exception{
        PreparedStatementExecuteInsert preparedStatementExecuteInsert = new PreparedStatementExecuteInsert(
                "insert into student_x values(?,?,?);",forname_x,
                url_x,user_x,password_x);
        preparedStatementExecuteInsert.preparedstatementexecuteinsert("Student3","male",19);
    }

    public void preparedstatementexecuteinsert(String name,String sex,int age) throws Exception{
        Class.forName(this.forname);

        Connection connection = DriverManager.getConnection(this.url,this.user,this.password);

        PreparedStatement preparedStatement = connection.prepareStatement(this.string_sql);

        preparedStatement.setString(1,name);
        preparedStatement.setString(2,sex);
        preparedStatement.setInt(3,age);

        preparedStatement.executeUpdate();

        if(preparedStatement != null) {
            preparedStatement.close();
        }
        if(connection != null) {
            connection.close();
        }

    }


    public void preparedstatementexecuteinsert1(String name,String sex,int age,int score) throws Exception{
        Class.forName(this.forname);

        Connection connection = DriverManager.getConnection(this.url,this.user,this.password);

        PreparedStatement preparedStatement = connection.prepareStatement(this.string_sql);

        preparedStatement.setString(1,name);
        preparedStatement.setString(2,sex);
        preparedStatement.setInt(3,age);
        preparedStatement.setInt(4,score);

        preparedStatement.executeUpdate();

        if(preparedStatement != null) {
            preparedStatement.close();
        }
        if(connection != null) {
            connection.close();
        }

    }
}

查询全表(执行默认的SQL语句)、计算列数、按照SQL语句查询(在Main类中修改this.string_sql,使之执行自定义输入的SQL语句): StatementExcute

package EX7;

import java.sql.*;
import java.util.Objects;

/**
 * @author 15328
 */
public class StatementExcute extends Main {
    public StatementExcute(String string_sql, String forname, String url, String user, String password) {
        super(string_sql, forname, url, user, password);
    }

    //这个类的main只提供单个类的功能测试,与整个程序的功能无关
    public static void main(String[] args) throws Exception {
        StatementExcute statementExcute = new StatementExcute("select * from student_x;",forname_x,
                url_x,user_x,password_x);
        statementExcute.statementexcute("");
    }
    public int show_all_classname()throws Exception {
        Class.forName(this.forname);

        Connection connection = DriverManager.getConnection(this.url,this.user,this.password);

        Statement statement = connection.createStatement();


        boolean hasResultSet = statement.execute(this.string_sql);
        int return_int = 0;

        if(hasResultSet){
            ResultSet resultSet = statement.getResultSet();
            ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
            return_int = resultSetMetaData.getColumnCount();
            for(int i=1;i<=resultSetMetaData.getColumnCount();i++){
                System.out.print(resultSetMetaData.getColumnName(i)+"\t");
            }
            System.out.println();
            if(resultSet != null) {
                resultSet.close();
            }
        }
        if(statement != null) {
            statement.close();
        }
        if(connection != null) {
            connection.close();
        }
        return return_int;
    }

    public void statementexcute(String sql) throws Exception {
        Class.forName(this.forname);

        Connection connection = DriverManager.getConnection(this.url,this.user,this.password);

        Statement statement = connection.createStatement();

        if(Objects.equals(this.string_sql, "")){
            this.string_sql = sql;
        }

        boolean hasResultSet = statement.execute(this.string_sql);
        if(hasResultSet){

            ResultSet resultSet = statement.getResultSet();
            ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
            for(int i=1;i<=resultSetMetaData.getColumnCount();i++){
                System.out.print(resultSetMetaData.getColumnName(i)+"\t");
            }
            System.out.println();

            //System.out.println("getColumnCount: "+resultSetMetaData.getColumnCount());
            while(resultSet.next()){
               String show ="";
                for(int i=1;i<=resultSetMetaData.getColumnCount();i++){
                    if("java.lang.String".equals(resultSetMetaData.getColumnClassName(i))){
                        show += resultSet.getString(i) + "\t";
                    }
                    if("java.lang.Integer".equals(resultSetMetaData.getColumnClassName(i))){
                        show += resultSet.getInt(i) + "\t";
                    }
                }
                System.out.println(show);
               // System.out.println(resultSet.getInt(1));
            }
            if(resultSet != null) {
                resultSet.close();
            }
        }
        if(statement != null) {
            statement.close();
        }
        if(connection != null) {
            connection.close();
        }

    }


    public void count(String sql)throws Exception{
        Class.forName(this.forname);

        Connection connection = DriverManager.getConnection(this.url,this.user,this.password);

        Statement statement = connection.createStatement();

        if(Objects.equals(this.string_sql, "")){
            this.string_sql = sql;
        }

        boolean hasResultSet = statement.execute(this.string_sql);
        if(hasResultSet){

            ResultSet resultSet = statement.getResultSet();
            ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
            for(int i=1;i<=resultSetMetaData.getColumnCount();i++){
                System.out.print(resultSetMetaData.getColumnName(i)+"\t");
            }
            System.out.println();

            //System.out.println("getColumnCount: "+resultSetMetaData.getColumnCount());
            while(resultSet.next()){
                System.out.println(resultSet.getInt(1));
            }
            if(resultSet != null) {
                resultSet.close();
            }
        }
        if(statement != null) {
            statement.close();
        }
        if(connection != null) {
            connection.close();
        }
    }

}

按SQL语句、插入、删除、修改: StatementExcuteUpdate

出现问题的原因,这个类没问题,是因为Main类里函数的一个input.nextLine()
在这里插入图片描述

把它删掉就好了

package EX7;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;

/**
 * @author 15328
 */
public class StatementExcuteUpdate extends Main {

    StatementExcuteUpdate(String string_sql, String forname, String url, String user, String password){
        super(string_sql,forname,url,user,password);
    }

    //这个类的main只提供单个类的功能测试,与整个程序的功能无关
    public static void main(String[] args) throws Exception{
        StatementExcuteUpdate statementExcuteUpdate = new StatementExcuteUpdate(
                "select * from student_x;",forname_x, url_x,user_x,password_x);
        statementExcuteUpdate.statementexcuteupdate("");
    }

    public void statementexcuteupdate(String sql) throws  Exception {
        Class.forName(this.forname);

        Connection connection = DriverManager.getConnection(this.url,this.user,this.password);

        Statement statement = connection.createStatement();

        statement.executeUpdate(sql);

        if(statement != null) {
            statement.close();
        }
        if(connection != null) {
            connection.close();
        }
    }
}

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐