建立一张雇员表(雇员编号、姓名、工作、雇佣日期、基本工资、部门名称), 在命令窗口下将表中的全部数据列出来。

package com.java.development.seventeen_database.exericses;

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;

/**
 * 
* @ClassName: Ex05
* @Description: 建立一张雇员表(雇员编号、姓名、工作、雇佣日期、基本工资、部门名称),
* 				在命令窗口下将表中的全部数据列出来。
* @author houdo
* @date 2018年11月27日 下午1:08:29
*
 */
public class Ex05 {
	// 定义MySQL的数据库驱动程序
	public static final String DBDRIVER = "com.mysql.cj.jdbc.Driver";
	// 定义MySQL数据库的连接地址
	public static final String DBURL = "jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true";
	// MySQL数据库的连接用户名
	public static final String DBUSER = "root";
	// MySQL数据库的连接密码
	public static final String DBPASS = "123456";
	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++) {
				// System.out.print(allEmploye[i][j] + "\t");
				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]);
				}
			}
			// System.out.println();
			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);// 实例化PreparedStatement对象
		pstmt.execute();
		pstmt.close();
	}

}

 

你可能感兴趣的:(Java开发实战经典)