目录

数据库大作业

准备工作

环境

  • JDK(建议 1.8 以上)
  • 开发工具,Eclipse 或者 idea …
  • mysql 或者 mssql(我是用的** mysql5.7.17**,给的 demo 是 mysql 的)

测试给的 Demo

①装好 mysql 之后启动它,然后用管理工具我用的是** navicat**,打开然后将给的 demo 里面的 sql 脚本导入进去(导入不好的可以手动建立一个,用脚本文件导入后的名字是 tb_demo,我这里是手动建的)

http://static.imlgw.top/image/20190524/oNHeEFJhHEYX.png?imageslim

最后差不多是这样的结构

②在** Eclipse 里面 import 项目,这里我 import 会有个感叹号,最好重新建一个项目,不然可能会有奇怪的错误下面是如何新建的步骤视频**

这里要改的地方就是 DbUtil 里面数据库配置

public class DbUtil {
	//com.microsoft.sqlserver.jdbc.SQLServerDriver
    //数据库驱动的名字(1.6 还是 1.8 之后就不需要了,这里还是加上吧)
	String driverName = "com.mysql.jdbc.Driver";
	//jdbc:sqlserver://127.0.0.1:1433;DatabaseName=demo
    //连接数据库的地址,前面的不用改,这里要改的就是后面的 demo 换成你的数据库名字(我上面的是 demo)
	String dbURL = "jdbc:mysql://localhost:3306/demo";
    //你的数据库的帐号
	String userName = "root";
    //装 mysql 时设置的密码
	String userPwd = "admin"; 

	public Connection getCon() throws ClassNotFoundException, SQLException {
		Class.forName(driverName);
		Connection conn = DriverManager.getConnection(dbURL, userName, userPwd);
		return conn;
	}

	public void closeCon(Connection conn) throws SQLException {
		if (conn != null)
			conn.close();
	}

	public static void main(String[] args) {
		DbUtil dbUtil = new DbUtil();
		try {
			dbUtil.getCon();
			System.out.println("连接成功");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

注意事项

	//com.microsoft.sqlserver.jdbc.SQLServerDriver
    //数据库驱动的名字(1.6 还是 1.8 之后就不需要了,这里还是加上吧)
	String driverName = "com.mysql.jdbc.Driver";
	//jdbc:sqlserver://127.0.0.1:1433;DatabaseName=demo
    //连接数据库的地址,这里要改的就是后面的 demo 换成你的数据库名字(我上面的是 demo)
	String dbURL = "jdbc:mysql://localhost:3306/demo";
    //你的数据库的帐号
	String userName = "root";
    //密码
	String userPwd = "admin"; 

要改的差不多就是这 4 个配置

①如果是** mysql 并且版本是 8 以下的,那么 driverName** 可以不用改,如果是 8 以上的(群里面那个是 8 以上的)就需要改成

com.mysql.cj.jdbc.Driver,并且找到适合版本的驱动拷贝到 lib 目录然后右键 bulidpath(在这之前先将老的驱动删掉,bulidpath 的作用是将 jar 包真正的加到你的项目中去)

  • 8 以上 驱动下载地址 链接:https://pan.baidu.com/s/1WXjAAHX5gQC6v5pfiTOqmQ 提取码:5lf5

  • sqlServer 需要改的地方我也注释在上面但是我电脑上没 sqlserver 我没有测试,老师给的包里面有 sqlserver 的驱动

dbURL,前面的不用改,这里只需要改一下后面的数据库名字,比如我上面建的数据库名字是** demo**, 后面就应该是/demo(如果用脚本直接导入生成的数据库名字是 db_demo,这里就要改成 jdbc:mysql://localhost:3306/db_demo

  • 对应 sqlserver 的我也放在上面但是我没装 sqlserver 所以没测试。

userName,数据库账号(一般默认就是 root)

password,数据库密码

启动

在 view 包下的** MainPage**,这是用 java 的 swing 组件开发的一个 GUI 页面,最下面有一个 main 函数直接启动它就行,(如果有乱码,需要将 eclipes 的工作空间的编码方式换为** utf-8**),到此环境就基本 ok 了,后面的就是写代码的事了。

改用自己的数据库

后面的部分主要是代码的问题了,每个人数据库不同也会有一些差距

  • 导入自己的数据

    数据库名字,字段名不要用中文!

    数据库名字,字段名不要用中文 !

    数据库名字,字段名不要用中文!

  • 实体类改成自己的

import java.util.Date;

public class StuInfo {

	private Long stuId;
	private String stuName;
	private String stuSex;
	private Date stuDob;
	private String stuMajor;
	
	public Long getStuId() {
		return stuId;
	}

	public void setStuId(Long stuId) {
		this.stuId = stuId;
	}

	public String getStuName() {
		return stuName;
	}

	public void setStuName(String stuName) {
		this.stuName = stuName;
	}

	public String getStuSex() {
		return stuSex;
	}

	public void setStuSex(String stuSex) {
		this.stuSex = stuSex;
	}

	public Date getStuDob() {
		return stuDob;
	}

	public void setStuDob(Date stuDob) {
		this.stuDob = stuDob;
	}

	public String getStuMajor() {
		return stuMajor;
	}

	public void setStuMajor(String stuMajor) {
		this.stuMajor = stuMajor;
	}
	
	public StuInfo() {

	}

	public StuInfo(String stuName, String stuSex, Date stuDob, String stuMajor) {
		this.stuName = stuName;
		this.stuSex = stuSex;
		this.stuDob = stuDob;
		this.stuMajor = stuMajor;
	}
}

这里实体类是和数据库的表和字段对应的,一个 StuInfo 对象就对应一条数据。

  • 增删改查的修改

public class UserDao {
	public ResultSet getUsers(User user, Connection con) throws SQLException {
		StringBuffer sql = new StringBuffer("select * from t_user ");
		if (user.getUserName()!= null) {
			sql.append(" where userName like '%"+user.getUserName()+"%'");
		}
		PreparedStatement ps = con.prepareStatement(sql.toString());
		return ps.executeQuery();
	}
	
	public int delete(User user, Connection con) throws SQLException{
		String sql="delete from t_user where userName='"+user.getUserName()+"'";
		PreparedStatement ps = con.prepareStatement(sql);
		return ps.executeUpdate();
	}
	
	public int add(User user, Connection con) throws SQLException{
		String sql="insert into t_user  values(?,?)";
		PreparedStatement ps = con.prepareStatement(sql);
		ps.setString(1, user.getUserName());
		ps.setString(2, user.getTel());
		return ps.executeUpdate();
	}
	
	public int modify(User user, Connection con) throws SQLException{
		String sql="update t_user  set userName=?, tel=? where userName = '"+user.getUserName()+"'";
		PreparedStatement ps = con.prepareStatement(sql);
		ps.setString(1, user.getUserName());
		ps.setString(2, user.getTel());
		System.out.println(sql);
		return ps.executeUpdate();
	}
}

最终都是通过调用这个 Dao 类实现的增删改查。

  • 页面的修改

按照老师的要求是对我们常用的数据库做增删改查,因为我们用的数据库和给的 demo 的表结构不一样,所以需要修改 MainPage,这个是用 java 的 swing 写的一个 GUI,所以需要改这些界面上的一些元素,我记的好像有个插件可以直接拖动生成 swing 这些界面的(看见刘勇用过),我对 swing 不熟悉(早就过时了,没有学的意义),我用 web 写的界面

http://static.imlgw.top/image/20190530/96gB7wwVz4Xj.png?imageslim

Mysql

Mysql5.7 解压版的安装和卸载及常见问题