数据库大作业
准备工作
环境
- JDK(建议 1.8 以上)
- 开发工具,Eclipse 或者 idea …
- mysql 或者 mssql(我是用的** mysql5.7.17**,给的 demo 是 mysql 的)
测试给的 Demo
①装好 mysql 之后启动它,然后用管理工具我用的是** navicat**,打开然后将给的 demo 里面的 sql 脚本导入进去(导入不好的可以手动建立一个,用脚本文件导入后的名字是 tb_demo,我这里是手动建的)
最后差不多是这样的结构
②在** 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 写的界面