Java实验十四

1、建立一个用户表(数据表和表中的数据列由用户自行创建),表的名称和列的定义都使用键盘输入,并在数据库中创建此表。
在这里插入图片描述
在这里插入图片描述

2、编写一个程序,可以通过此程序完成一个表的创建操作,输入表名称、各个列的名称及类型,输入完成后直接通过 JDBC 创建指定的表。

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

public class Main {
    public static final String DBDRIVER = "com.mysql.cj.jdbc.Driver";
    public static final String DBURL = "jdbc:mysql://localhost:3306/sqldatabase";
    public static final String DBUSER = "root";
    public static final String DBPASS = "mysql1234";
    public static void main(String[] args) throws Exception {
        Connection conn = null;
        Statement stmt = null;
        String sql = "CREATE TABLE table2(" +
                "id INT AUTO_INCREMENT PRIMARY KEY ," +
                "name VARCHAR(30) NOT NULL ," +
                "password VARCHAR(32) NOT NULL ," +
                "age INT NOT NULL ," +
                "sex VARCHAR(2) DEFAULT '男' ," +
                "birthday DATE " +
                ") ";
        Class.forName(DBDRIVER);
        conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
        stmt = conn.createStatement();
        stmt.executeUpdate(sql);
        stmt.close();
        conn.close();
    }

}

在这里插入图片描述

3、使用键盘输入流,接受一段数据,并输入一个图片路径,之后将这些数据保存在数据表中,数据表用户自行创建。
//源代码链接:https://blog.csdn.net/qq_25345343/article/details/84570558

//源代码链接:https://blog.csdn.net/qq_25345343/article/details/84570558
import java.io.BufferedReader;  
import java.io.ByteArrayInputStream;  
import java.io.File;  
import java.io.FileInputStream;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.InputStreamReader;  
import java.sql.Connection;  
import java.sql.DriverManager;  
import java.sql.PreparedStatement;  
import java.sql.SQLException;  
import java.sql.Statement;  
  
public class Main {  
    // 定义MySQL的数据库驱动程序  
    public static final String DBDRIVER = "com.mysql.cj.jdbc.Driver";  
    // 定义MySQL数据库的连接地址  
    public static final String DBURL = "jdbc:mysql://localhost:3306/sqldatabase";  
    // MySQL数据库的连接用户名  
    public static final String DBUSER = "root";  
    // MySQL数据库的连接密码  
    public static final String DBPASS = "mysql1234";  
  
    class InputData {// 数据输入类  
        BufferedReader buf = null;// 声明BufferedReader对象  
  
        public InputData() {// 通过构造方法初始化对象  
            buf = new BufferedReader(new InputStreamReader(System.in));  
        }  
  
        public String getString(String info) {// 从方法中得到字符串的信息  
            String temp = null;  
            System.out.print(info);  
            try {  
                temp = this.buf.readLine();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
            return temp;  
        }  
  
        public File getPhoneDir(String info, String err) {// 得到一个图片路径  
            File file = null;  
            String str = null;  
            boolean flag = true;// 定义一个循环处理的标志  
            while (flag) {  
                str = this.getString(info);  
                file = new File(str);  
                if (file.isFile() && file.toString().matches(".+\\.(jpg|png|jpeg|gif)")) {  
                    flag = false;  
                } else {  
                    System.out.println(err);  
                }  
            }  
            return file;  
        }  
    }  
  
    public static void main(String[] args) {  
        Connection conn = null;// 数据库连接  
        try {  
            Class.forName(DBDRIVER);// 加载驱动程序  
            // 连接MySQL数据库时,要写上连接的用户名和密码  
            conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);  
            createTable(conn);// 创建表格  
            setInformation(conn);// 插入信息  
        } catch (ClassNotFoundException | SQLException e) {  
            e.printStackTrace();  
        } finally {  
            try {  
                conn.close();  
            } catch (SQLException e) {  
                e.printStackTrace();  
            }  
        }  
    }  
  
    private static void setInformation(Connection conn) throws SQLException {  
        PreparedStatement pstmt = null;// 数据库操作  
        Main e3 = new Main();  
        while (true) {  
            String text = e3.new InputData().getString("请输入文本信息:");  
            File f = e3.new InputData().getPhoneDir("请输入图片的路径:", "输入的路径不正确!");  
            String sql = "insert into info(note,phone) values (?,?)";  
            pstmt = conn.prepareStatement(sql);// 实例化PreparedStatement  
            InputStream input = null;  
            try {  
                byte[] b = text.getBytes();// 将字符串转换为字节数组  
                input = new ByteArrayInputStream(b);// 将String转换为输入流  
                pstmt.setAsciiStream(1, input, b.length);  
                input = new FileInputStream(f);  
                pstmt.setBinaryStream(2, input, f.length());  
                pstmt.executeUpdate();  
                pstmt.close();  
                String temp = e3.new InputData().getString("是否继续添加?N取消:");  
                if ("N".equals(temp) || "n".equals(temp)) {  
                    break;  
                }  
            } catch (IOException e) {  
                e.printStackTrace();  
            } finally {  
                if (input != null) {  
                    try {  
                        input.close();  
                    } catch (IOException e) {  
                        e.printStackTrace();  
                    }  
                }  
            }  
        }  
    }  
  
    private static void createTable(Connection conn) throws SQLException {// 创建数据表  
        Statement stmt = null;// 数据库操作  
        stmt = conn.createStatement();  
        String sql = "create table if not exists info (id int auto_increment primary key,note longtext,phone longblob)";  
        stmt.execute(sql);  
    }  
  
}

可以看出多了一个info数据表:
在这里插入图片描述
查看数据表:
在这里插入图片描述

4、建立一张雇员表(雇员编号、姓名、工作、雇佣日期、基本工资、部门名称),在命令窗口下将表中的全部数据列出。
//源代码链接:https://blog.csdn.net/qq_43776450/article/details/98469367

//源代码链接:https://blog.csdn.net/qq_43776450/article/details/98469367
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;


public class Main {
    // 定义MySQL的数据库驱动程序
    public static final String DBDRIVER = "com.mysql.cj.jdbc.Driver";
    // 定义MySQL数据库的连接地址
    public static final String DBURL = "jdbc:mysql://localhost:3306/sqldatabase";
    // MySQL数据库的连接用户名
    public static final String DBUSER = "root";
    // MySQL数据库的连接密码
    public static final String DBPASS = "mysql1234";

    public static void main(String[] args) {
        Connection conn = null;// 数据库连接
        try {
            Class.forName(DBDRIVER);
            conn = DriverManager.getConnection(DBURL, DBUSER, DBPASS);
            createTable(conn);// 创建雇员表
            insertInfo(conn);// 插入数据
            query(conn);// 查询信息
        } catch (ClassNotFoundException | SQLException | ParseException e) {
            e.printStackTrace();
        }

    }

    private static void query(Connection conn) throws SQLException {
        PreparedStatement pstmt = null;// 数据库操作
        ResultSet rs = null;// 保存查询结果
        String sql = "select eid,name,work,hiredate,basicwage,dept "
                + "from employe";
        pstmt = conn.prepareStatement(sql);
        rs = pstmt.executeQuery();// 实例化ResultSet对象
        System.out.println("查询结果如下:");
        System.out.println("雇员编号\t姓名\t工作\t雇佣日期\t\t基本工资\t\t部门名称");
        while (rs.next()) {
            int eid = rs.getInt(1);
            String name = rs.getString(2);
            String work = rs.getString(3);
            java.util.Date hiredate = rs.getDate(4);
            Float basicwage = rs.getFloat(5);
            String dept = rs.getString(6);
            System.out.print(eid + "\t");
            System.out.print(name + "\t");
            System.out.print(work + "\t");
            System.out.print(hiredate + "\t");
            System.out.print(basicwage + "\t\t");
            System.out.println(dept);
        }
    }

    private static void insertInfo(Connection conn) throws SQLException, ParseException {// 向表中插入数据
        PreparedStatement pstmt = null;// 数据库操作
        java.util.Date temp = null;
        String sql = "insert into employe(name,work,hiredate,basicwage,dept) values(?,?,?,?,?)";
        pstmt = conn.prepareStatement(sql);// 实例化PreparedStatement对象
        String[] employe1 = {"张三", "程序员", "2001-04-15", "8000", "搜索部"};
        String[] employe2 = {"李四", "程序员", "2004-06-01", "6000", "游戏测试部"};
        String[] employe3 = {"王五", "项目经理", "2011-02-04", "12000", "搜索部"};
        String[] employe4 = {"赵六", "董事长", "1999-08-30", "20000", "董事会"};
        String[] employe5 = {"钱七", "项目助理", "2016-08-07", "7000", "财务部"};
        String[] employe6 = {"孙八", "销售", "2017-05-21", "6000", "销售部"};
        String[][] allEmploye = {employe1, employe2, employe3, employe4, employe5, employe6};
        for (int i = 0; i < allEmploye.length; i++) {
            for (int j = 0; j < allEmploye[i].length; j++) {

                if (j == 2) {
                    // 通过SimpleDateFormat类将字符串转换为java.util.Date类型
                    temp = new SimpleDateFormat("yyyy-MM-dd").parse(allEmploye[i][j]);
                    // 通过java.util.Date取出具体的日期数,并将其变为java.sql.Date类型
                    java.sql.Date date = new java.sql.Date(temp.getTime());
                    pstmt.setDate(j + 1, date);
                } else if (j == 3) {
                    Float number = Float.valueOf(allEmploye[i][j]);
                    pstmt.setFloat(j + 1, number);
                } else {
                    pstmt.setString(j + 1, allEmploye[i][j]);
                }
            }

            pstmt.addBatch();
        }
        int num[] = pstmt.executeBatch();
        System.out.println("更新了" + num.length + "条数据。");
        pstmt.close();
    }

    private static void createTable(Connection conn) throws SQLException {
        PreparedStatement pstmt = null;
        String sql = "create table if not exists employe(eid int auto_increment primary key,name varchar(20) not null,"
                + "work varchar(30) not null,hiredate date not null,basicwage float not null,dept varchar(40))";
        pstmt = conn.prepareStatement(sql);
        pstmt.execute();
        pstmt.close();
    }
}

在这里插入图片描述
命令窗口下查看表中数据:
在这里插入图片描述

实验5 常用类(2学时) 一、实验目的 1. 熟悉Java中的String、StringBuffer、Math、包装器类的使用方法。 2. 使用常用类解决一般性的应用问题。 3. 掌握JavaSE API文档的使用方法。 二、实验内容 1. 编写一个程序,输出一个字符串中的大写英文字母数,小写英文字母数以及非英文字母数。(字符串可以在main方法中指定) 2. 调用java.lang.Math的成员函数“public static double random()”运算下面表达式1000次,(int) (Math.random()*20+0.5),统计其中生成的整数0、1、2、……、20的个数分别是多少,并输出统计结果。 3. 编写一个方法,返回一个double型的二维数组,数组中的元素通过解析字符串参数获得。例如,字符串参数:“1,2;3,4,5;6,7,8”,对应的数组为: d[0,0] = 1.0 d[0,1] = 2.0 d[1,0] = 3.0 d[1,1] = 4.0 d[1,2] = 5.0 d[2,0] = 6.0 d[2,1] = 7.0 d[2,2] = 8.0 三、实验要求 完成程序设计并提交实验报告。 实验6 容器(2学时) 一、实验目的 1. 熟悉容器类库中常用类的使用方法。 2. 使用常用容器类解决一般性的应用问题。 二、实验内容 1. 用HashMap模拟一个网上购物车。要求:从键盘输入5本书的名称、单价、购买数量,将这些信息存入一个HashMap,然后将该HashMap作为参数调用方法getSum(HashMap books),该方法用于计算书的总价并返回。【说明:键盘输入可以使用Scanner类】 2. 使用两个Stack类(JDK容器类库中的Stack类)实现一个队列类MyQueue,提供队列的入队列和出队列操作:enQueue和deQueue。 3. 写一个彩票程序:30选7。随机(1~30之间)生成7个随机数,注意不能重复。然后从键盘输入7个数,对比7个数是否与随机数有相同的。最后显示“中了几个号”。同时,如果中了7个号,显示一等奖;如果中了6个号,显示二等奖;如果中了5个号,显示三等奖。要求:首先写出程序的实现思想,特别是程序所使用的数据结构,然后写出Java实现代码。【说明:键盘输入可以使用Scanner类】 三、实验要求 完成程序设计并提交实验报告。 实验7 流(2学时) 一、实验目的 1. 熟悉流类库中各种常用流的使用方法。 2. 能够使用流类实现基本的文件读写。 二、实验内容 1. 编写程序,在控制台窗口提示输入两个整数,然后接收这两个整数,并输出它们的和。(要求:键盘输入通过流封装System.in获取,不要使用Scanner类) 2. 设计学生类Student,属性:编号(整型);姓名(字符串),成绩(整型)。编写一个程序:要求:(1)输入5个学生的姓名和成绩,将其姓名和成绩保存到data.txt中;(2)然后从该文件中读取数据,求得这五个学生的平均成绩。 三、实验要求 完成程序设计并提交实验报告。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Re:从零开始的代码生活

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值