JDBC 程序实例问题

编程实现如下功能:在数据库中建立一个表,表名为student,其结构为学号、姓名、性别、年龄、英语、JavaSE程序设计、初级日语、总分,在表中输入多条记录。

  • 学生的总分信息,通过修改总分 = 英语 + JavaSE程序设计+ 初级日语
  • 查询所有学生的信息,并显示出来。
  • 查询所有不及格成绩的学生信息。
  • 插入一条记录。
  • 修改性别为男的所有学生的年龄 = 年龄 + 1.
  • 删除(4)题目中插入的记录
  • 将表中记录按照总分降序输出。

代码实现

package www.yjl;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/hair?useUnicode=true&characterEncoding=utf8","root","123456");

            //(1)计算总分
            String updateSql = "update student set 总分=英语+JavaSE程序设计+初级日语";
            PreparedStatement pst = conn.prepareStatement(updateSql);
            int zf = pst.executeUpdate();
            if (zf > 0)
            {
                System.out.println("总分计算成功!");
            }
            System.out.println("-------------------------");
            //查询所有学生的信息,并显示出来
            String showAll = "select * from student";
            PreparedStatement pst1 = conn.prepareStatement(showAll);
            ResultSet rs = pst1.executeQuery();
            while (rs.next())
            {
                for (int i = 1;i <= 9;i++)
                {
                    System.out.print(rs.getString(i)+" ");
                }
                System.out.println();
            }
            System.out.println("-------------------------");

            //查询不及格成绩的学生信息
            String showFild = "select * from student where 英语<60 or JavaSE程序设计<60 or 初级日语 <60";
            PreparedStatement pst2 = conn.prepareStatement(showFild);
            ResultSet rsshouFild = pst2.executeQuery();
            while (rsshouFild.next())
            {
                for (int i = 1;i <= 9;i++)
                {
                    System.out.print(rsshouFild.getString(i)+" ");
                }
                System.out.println();
            }
            System.out.println("-------------------------");

            //插入一条数据
            System.out.println("Now you will alowed to import a line:");

            String insertLine = "insert into student(Id,学号,姓名,性别) values(?,?,?,?)";
            //String updateSql1="update student set 学号=?,姓名=? where 性别=?";
            PreparedStatement pstInsert=conn.prepareStatement(insertLine);

            Scanner sc = new Scanner(System.in);
            System.out.println("请输入学生ID:");
            String id=sc.next();
            System.out.println("请输入学生学号:");
            String number=sc.next();
            System.out.println("请输入学生姓名:");
            String name=sc.next();
            System.out.println("请输入学生性别:");
            String sex=sc.next();

            pstInsert.setString(1, id);
            pstInsert.setString(2, number);
            pstInsert.setString(3, name);
            pstInsert.setString(4, sex);
            int y = pstInsert.executeUpdate();
            if(y>0)
            {
                System.out.println("恭喜你插入了一条新的数据!");
            }
            System.out.println("-------------------------");
            //这是你点击输入的时候,光标没有自动跳转到你要放你输入内容的地方,他在的地方可能已经有了内容,所以你输入内容就输入不进去,
            //解决办法就是把光标点到你要输入内容的地方,这是eclipse本身的缺陷,目前应该还没有解决办法。
            //一直存在输入不进去的bug,这是找到的答案....次奥!!!!搞我半个小时,我还以为代码有问题.....

            //修改性别为男的所有学生的年龄=年龄+1
            String updateBoyOld = "update student set 年龄=年龄+1 where 性别 ='男'";
            PreparedStatement pstupdateBoyOld = conn.prepareStatement(updateBoyOld);
            int boyplus = pstupdateBoyOld.executeUpdate();
            if (boyplus > 0)
            {
                System.out.println("年龄加 1 成功!");
            }
            System.out.println("-------------------------");

            //将表中记录按照总分降序输出
            String updateSoreDesc = "select * from student order by 总分 desc";
            PreparedStatement pstSoreDesc = conn.prepareStatement(updateSoreDesc);
            ResultSet rsSoreDesc = pstSoreDesc.executeQuery();
            while (rsSoreDesc.next())
            {
                for (int i = 1;i <= 9;i++)
                {
                    System.out.print(rsSoreDesc.getString(i)+" ");
                }
                System.out.println();
            }
            System.out.println("-------------------------");

            //删除数据
            String deleteSql="delete from student where 学号=?";
            PreparedStatement pstDelete=conn.prepareStatement(deleteSql);
            pstDelete.setString(1,"1005");
            int e = pstDelete.executeUpdate();
            if (e>0)
            {
                System.out.println("删除成功!");
            }

        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

小结

这个程序是昨晚搞出来的,也算是一个没有界面的小程序了,用的是一个测试类,代码冗长...enmmm...
一百多行代码,最终写完,其中,发现自己还是有好多问题,自己还有好多东西要学习啊。。。现在还是蒟蒻啊....本来是想着昨晚接着贴出来的,有点事情给耽搁了....

JDBC 程序实例小练习的更多相关文章

  1. JDBC程序实例

    实例 ( Statement ): public class JDBC { public static void main(String[] args) throws Exception { Conn ...

  2. 微信小程序实例源码大全

    微信小程序实例源码大全下载 微信小应用示例代码(phodal/weapp-quick)源码链接:https://github.com/phodal/weapp-quick 微信小应用地图定位demo( ...

  3. 微信小程序实例教程(一)

    序言 开始开发应用号之前,先看看官方公布的「小程序」教程吧!(以下内容来自微信官方公布的「小程序」开发指南) 本文档将带你一步步创建完成一个微信小程序,并可以在手机上体验该小程序的实际效果.这个小程序 ...

  4. 微信小程序实例-摇一摇抽奖

    概述 前面我们讲了如何开始微信小程序搭建和一些组件的介绍.微信小组件和微信小程序入门 微信小程序目录 为了更好的理解小程序和小程序开发,我们首先来看一下项目的目录. 首先看下根目录下的app.json ...

  5. 开发一个微信小程序实例教程

    一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可.2.注册成功后进入首页,在 小程序发布流程->小程序开 ...

  6. 微信小程序实例源码大全下载

     小程序QQ交流群:131894955  小程序开发直播腾讯课堂:  https://edu.csdn.net/course/detail/6743 微信小程序实例源码大全下载 微信小应用示例代码(p ...

  7. 微信小程序实例代码

    http://blog.csdn.net/zuoliangzhu/article/details/53862576#t1 项目结构 └─ empty-folder/ ················· ...

  8. 微信小程序实例源码大全2

    wx-gesture-lock  微信小程序的手势密码 WXCustomSwitch 微信小程序自定义 Switch 组件模板 WeixinAppBdNovel 微信小程序demo:百度小说搜索 sh ...

  9. Android开发5:应用程序窗口小部件App Widgets的实现

    前言 本次主要是实现一个Android应用,实现静态广播.动态广播两种改变 widget内容的方法,即在上篇博文中实验的基础上进行修改,所以此次实验的重点是AppWidget小部件的实现啦~ 首先,我 ...

随机推荐

  1. lua元表

    __index元方法:按照之前的说法,如果A的元表是B,那么如果访问了一个A中不存在的成员,就会访问查找B中有没有这个成员.这个过程大体是这样,但却不完全是这样,实际上,即使将A的元表设置为B,而且B ...

  2. Winform远程更新代码

    本软件具备以下形: 1.通过http形式在客户端更新winform代码文件 2.在服务端通过软件生成xml配置文件,客户端通过比对xml配置文件来更新代码文件. 服务端: 在服务器上建立一个IIS发布 ...

  3. Less注释语法

    Less注释语法 适当的注释是保证代码可读性的必要手段,Less支持两种类型的注释:多行注释和单行注释. 1)形如 /* */ 的多行注释.如: /* Hello, I'm a CSS-style c ...

  4. pku夏令营面试

    北大面试题目: 一.内存交换 内存交换(对换)的基本思想是,把处于等待状态(或在CPU调度原则下被剥夺运行权利) 的程序从内存移到辅存,把内存空间腾出来,这一过程又叫换出:把准备好竞争CPU运行的程序 ...

  5. 《Android源码设计模式》学习笔记之ImageLoader

    微信公众号:CodingAndroid cnblog:http://www.cnblogs.com/angel88/ CSDN:http://blog.csdn.net/xinpengfei521 需 ...

  6. MVC文件夹及文件说明

    一个典型的 ASP.NET MVC Web 应用程序的文件夹内容如下所示: 所有的 MVC 应用程序的文件夹名称都是相同的.MVC 框架是基于默认的命名.控制器写在 Controllers 文件夹中, ...

  7. 用python 抓取B站视频评论,制作词云

    python 作为爬虫利器,与其有很多强大的第三方库是分不开的,今天说的爬取B站的视频评论,其实重点在分析得到的评论化作嵌套的字典,在其中取出想要的内容.层层嵌套,眼花缭乱,分析时应细致!步骤分为以下 ...

  8. KMP算法求next数组

    next数组的求解方法是:第一位的next值为0,第二位的next值为1.后面求解每一位的next值时,根据前一位进行比较.首先将前一位与其next值对应的内容进行比较,如果相等,则该位的next值就 ...

  9. HDU2186--水

    悼念512汶川大地震遇难同胞--一定要记住我爱你 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java ...

  10. JavaSE初步学习笔记

    PS:个人用来随时记录学习的过程,格式比较混乱,仅供个人参考与复习知识点 Dos命令行,课程中常见的命令 Dir:列出当前目录下包含的文件 Md:在当前目录下创建文件 Rd:在当前目录下删除指定文件夹 ...