 
                                一、IntelliJ IDEA软件的安装
IDEA 2024.3 最新破解版安装教程(附激活码,至2099年~)-软技收集(这个是IntelliJ IDEA安装教程)
二、JDK安装
1.下载jdk的安装包
这里我提供了一个 jdk-8u421-windows-x64.exe

①双击打开,点击下一步

②选着你需要安装到的位置
这里我就默认C盘,当然你也可以选择其他地方

③等待一会弹出安装目标文件夹窗口
继续点击下一步,这里我就默认C盘,当然你也可以选择其他地方

④到这里jdk的安装就完成了
但是

⑤JDK环境变量配置
1.1右键此电脑,选择属性

1.2向下滑动找到高级系统设置

1.3选择环境变量

1.4添加系统环境变量(JAVA_HOME )
【变量名】为:
【变量值】为:
注:
最后点击【确定】

1.5添加系统环境变量(CLASSPATH )
【变量名】为:
最后点击【确定】

1.6系统环境变量里面的Path新添加一条记录值 
新增一行记录,填入的值为:
然后点击【确定】

1.7添加的记录

1.8验证JDK是否部署成功
使用快捷键【win+R】,输入cmd,点击【确定】

输入【

三、项目搭建
①打开IntelliJ IDEA
新建一个


②复制文件到刚刚创建的项目

大概是这样的结构

③jar驱动添加为库


这里IntelliJ IDEA的环境就搭建好了
四、MySQL数据库搭建
Windows MySQL 5.7.44 解压版安装教程及报错处理-软技收集(这个是MySQL数据库安装教程)(
卸载MySQL
如果你想卸载MySQL,也很简单。
使用管理员运行cmd,打开黑框。
敲入net stop mysql,回车。

再敲入mysqld -remove mysql,回车。

最后删除MySQL目录及相关的环境变量。
至此,MySQL卸载完成!
按照上面搭建好数据库,并导入data文件
4.1停止数据库服务
使用命令或则服务
# 启动MySQL服务
net start mysql
# 检查MySQL服务状态
sc query mysql
# 关闭MySQL服务
net stop mysql
确保MySQL服务是关闭状态
4.2导入data


没有这个解压软件的到这里下载
PC-64-Bandizip v7.36 激活版(解压缩软件)-软技收集
4.3然后启动MySQL服务
启动MySQL服务
net start mysql
4.4打开Navicat Premium连接好本地的数据库
没有的去这里下载
PC-02-Navicat Premium(数据库管理) v17.1.11 绿色版-软技收集


4.5以下为导入后的数据展示
book

borrow

reader

user

到此数据库的部署也完成了,现在可以去IntelliJ IDEA修改一个地方,然后运行项目
五、项目的运行
①打开项目的src-》data-》BaseDao

②打开中文是乱码
是我们的编码格式设置为UTF-8而项目是GBK格式
改一下就好




或者修改整个项目的编码格式





③修改url和dbPwd

改成我们自己的
protected static String url = "jdbc:mysql://localhost:3306/db_09";// 定义要使用的数据库资源protected static String dbPwd = "123";// 定义连接数据库的密码
④运行Login登录界面


⑤运行成功

⑥登录密码
用户名:admin
密码:admin
用户名:user
密码:user

项目运行后里面内容是乱码

六、编码格式问题解 决思路 
下面是研究过程

大概的方法是修改src-》data中的代码
其中的ChangeString删除,这个主要负责
类功能:用于字符编码的相互转换。
/**
 * 静态成员方法1:用于将字符集为“ISO8859_1”的字符串,转换为字符集为"GBK"的字符串。 转出:
 * 数据表(ISO8859_1或Latin1)→程序(GBK)
 */
例如BookDao

改为,将代码中的
book.setId(ChangeString.ISOToGBK(rs.getString(“id”)));
改为
book.setId(rs.getString(“id”));
修改后的代码移除了编码转换(ISO 转 GBK)部分,直接将数据库中获取的原始字符串赋值给 book 的 ID 属性。

七、中文乱码解决方法
修改src-》data中每个代码
1.ReaderDao.java
此处只粘贴要修改的代码
//为原来的,//下面的为修改后
	/** 成员方法1:通过读者编号,获取一个读者对象 */
	public static Reader getReaderById(String id) {
		Reader reader = null;
		if (id != null) {
			// 构造按照读者编号查询读者的sql查询语句
			String sql = "select * from reader where id='" + id + "'";
			ResultSet rs = BaseDao.executeQuery(sql);// 执行查询语句,并返回结果集
			try {
				if (rs.next()) {// 下移结果集指针,判断记录是否存在?
					reader = new Reader();// 创建读者对象,并保存读者信息
//					reader.setId(ChangeString.ISOToGBK(rs.getString("id")));
					reader.setId(rs.getString("id"));
//				reader.setName(ChangeString.ISOToGBK(rs.getString("name")));
					reader.setName(rs.getString("name"));
//				reader.setType(ChangeString.ISOToGBK(rs.getString("type")));
					reader.setType(rs.getString("type"));
//				reader.setSex(ChangeString.ISOToGBK(rs.getString("sex")));
					reader.setSex(rs.getString("sex"));
					reader.setMax_num(rs.getInt("max_num"));
					reader.setDays_num(rs.getInt("days_num"));
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return reader;// 返回读者对象
	}
	/** 成员方法2:通过sql查询语句,获取读者对象列表 */
	public static List<Reader> selectReaderList(String sql) {
		List<Reader> list = new ArrayList<Reader>(); // 创建一个保存读者对象的列表
		if (sql != null) {
			Reader reader = null;
			ResultSet rs = BaseDao.executeQuery(sql);// 执行查询语句,并返回结果集
			try {
				while (rs.next()) {// 下移结果集指针,判断记录是否存在?
					reader = new Reader(); // 创建读者对象,保存读者信息
//					reader.setId(ChangeString.ISOToGBK(rs.getString("id")));
					reader.setId(rs.getString("id"));
//				reader.setName(ChangeString.ISOToGBK(rs.getString("name")));
					reader.setName(rs.getString("name"));
//				reader.setType(ChangeString.ISOToGBK(rs.getString("type")));
					reader.setType(rs.getString("type"));
//				reader.setSex(ChangeString.ISOToGBK(rs.getString("sex")));
					reader.setSex(rs.getString("sex"));
					reader.setMax_num(rs.getInt("max_num"));
					reader.setDays_num(rs.getInt("days_num"));
					list.add(reader);// 向读者列表添加读者对象
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return list;// 返回读者列表
	}2.BookDao.java
此处只粘贴要修改的代码
//为原来的,//下面的为修改后
	/** 成员方法1:通过图书编号,获取一个图书对象 */
	public static Book getBookById(String id) {
		Book book = null;
		if (id != null) {
			// 构造按照图书编号查询图书的sql查询语句
			String sql = "select * from book where id='" + id + "'";
			ResultSet rs = BaseDao.executeQuery(sql);// 执行查询语句,并返回结果集
			// 处理查询结果
			try {
				if (rs.next()) {
					// 创建图书对象,保存图书信息
					book = new Book();
//					book.setId(ChangeString.ISOToGBK(rs.getString("id")));
					book.setId(rs.getString("id"));
//				book.setName(ChangeString.ISOToGBK(rs.getString("name")));
					book.setName(rs.getString("name"));
//				book.setType(ChangeString.ISOToGBK(rs.getString("type")));
					book.setType(rs.getString("type"));
//				book.setAuthor(ChangeString.ISOToGBK(rs.getString("author")));
					book.setAuthor(rs.getString("author"));
//			book.setTranslator(ChangeString.ISOToGBK(rs.getString("translator")));
					book.setTranslator(rs.getString("translator"));
//			book.setPublisher(ChangeString.ISOToGBK(rs.getString("publisher")));
					book.setPublisher(rs.getString("publisher"));
//		book.setPublish_time(ChangeString.ISOToGBK(rs.getString("publish_time")));
					book.setPublish_time(rs.getString("publish_time"));
					book.setStock(rs.getInt("stock"));
					book.setPrice(rs.getDouble("price"));
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return book;// 返回图书对象
	}
	/** 成员方法2:通过图书名,获取一个图书对象 */
	public static Book getBookByName(String name) {
		Book book = null;
		if (name != null) {
			// 构造按照图书名称查询图书的sql查询语句
			String sql = "select * from book where name='" + name + "'";
			ResultSet rs = BaseDao.executeQuery(sql);// 执行查询语句,并返回结果集
			// 处理查询结果
			try {
				if (rs.next()) {
					// 创建图书对象,保存图书信息
					book = new Book();
//					book.setId(ChangeString.ISOToGBK(rs.getString("id")));
					book.setId(rs.getString("id"));
//				book.setName(ChangeString.ISOToGBK(rs.getString("name")));
					book.setName(rs.getString("name"));
//				book.setType(ChangeString.ISOToGBK(rs.getString("type")));
					book.setType(rs.getString("type"));
//				book.setAuthor(ChangeString.ISOToGBK(rs.getString("author")));
					book.setAuthor(rs.getString("author"));
//			book.setTranslator(ChangeString.ISOToGBK(rs.getString("translator")));
					System.out.println(rs.getString("translator"));
//			book.setPublisher(ChangeString.ISOToGBK(rs.getString("publisher")));
					System.out.println(rs.getString("publisher"));
//		book.setPublish_time(ChangeString.ISOToGBK(rs.getString("publish_time")));
					book.setPublish_time(rs.getString("publish_time"));
					book.setStock(rs.getInt("stock"));
					book.setPrice(rs.getDouble("price"));
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return book;// 返回图书对象
	}3.UserDao.java
此处只粘贴要修改的代码
//为原来的,//下面的为修改后
	/** 成员方法1:通过用户名和用户密码,获取一个用户对象 */
	public static User getUser(String name, String pass) {
		User user = null;
		if (name != null || pass != null) {
			// 构造按照用户名和密码查询用户的sql查询语句
			String sql = "select * from user where name=" + "'" + name + "' and pass="
					+ "'" + pass + "'";
			ResultSet rs = BaseDao.executeQuery(sql);// 执行查询语句,并返回结果集
			try {
				// 处理查询结果
				if (rs.next()) {// 下移结果集指针,判断记录是否存在?
					user = new User();// 创建用户对象,并保存用户信息
					user.setId(rs.getInt("id"));
//				user.setName(ChangeString.ISOToGBK(rs.getString("name")));
					user.setName(rs.getString("name"));
//				user.setPass(ChangeString.ISOToGBK(rs.getString("pass")));
					user.setPass(rs.getString("pass"));
					user.setIs_admin((rs.getByte("is_admin")));
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return user;// 返回用户对象
	}
	/** 成员方法2:通过用户编号,获取一个用户对象 */
	public static User getUser(int id) {
		User user = null;
		if (id > 0) {
			// 构造按照用户编号查询用户的sql查询语句
			String sql = "select * from user where id=" + id;
			ResultSet rs = BaseDao.executeQuery(sql);// 执行查询语句,并返回结果集
			try {
				if (rs.next()) {// 下移结果集指针,判断记录是否存在?
					user = new User();// 创建用户对象,并保存用户信息
					user.setId(rs.getInt("id"));
//				user.setName(ChangeString.ISOToGBK(rs.getString("name")));
					user.setName(rs.getString("name"));
//				user.setPass(ChangeString.ISOToGBK(rs.getString("pass")));
					user.setPass(rs.getString("pass"));
					user.setIs_admin((rs.getByte("is_admin")));
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return user;// 返回用户对象
	}
	/** 成员方法3:通过用户名,获取一个用户对象 */
	public static User getUser(String name) {
		User user = null;
		if (name != null) {
			// 构造按照用户名查询用户的sql查询语句
			String sql = "select * from user where name='" + name + "'";
			ResultSet rs = BaseDao.executeQuery(sql);// 执行查询语句,并返回结果集
			try {
				if (rs.next()) {
					user = new User();
					user.setId(rs.getInt("id"));
//				user.setName(ChangeString.ISOToGBK(rs.getString("name")));
					user.setName(rs.getString("name"));
//				user.setPass(ChangeString.ISOToGBK(rs.getString("pass")));
					user.setPass(rs.getString("pass"));
					user.setIs_admin((rs.getByte("is_admin")));
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return user;
	}
	/** 成员方法4:查询所有用户对象,并返回用户对象列表 */
	public static List<User> selectUserList() {
		User user = null;
		List<User> list = new ArrayList<User>();// 创建一个放置用户对象的列表
		// 构造查询所有用户的sql查询语句
		String sql = "select * from user";
		ResultSet rs = BaseDao.executeQuery(sql);// 执行查询操作,并返回结果集
		try {
			while (rs.next()) {
				// 创建用户对象,并保存用户信息
				user = new User();
				user.setId(rs.getInt("id"));
//				user.setName(ChangeString.ISOToGBK(rs.getString("name")));
				user.setName(rs.getString("name"));
//				user.setPass(ChangeString.ISOToGBK(rs.getString("pass")));
				user.setPass(rs.getString("pass"));
				user.setIs_admin((rs.getByte("is_admin")));
				list.add(user);// 将这个用户对象,添加到用户列表中
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return list;// 返回用户对象列表
	}4.ChangeString.java 删除
5.BaseDao.java
此处只粘贴要修改的代码
//为原来的,//下面的为修改后
	/**
	 * 成员方法1:创建执行对象,执行查询操作
	 * @param sql
	 * @return
	 */
	public static ResultSet executeQuery(String sql) {
		if (sql != null) {
			if (conn == null) {
				new BaseDao();// 加载驱动,并创建与数据库的连接对象
			}
			try {
				return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
//						ResultSet.CONCUR_UPDATABLE).executeQuery(ChangeString.GBKToISO(sql));// 创建执行对象,执行查询操作,并返回结果集
						ResultSet.CONCUR_UPDATABLE).executeQuery(sql);// 创建执行对象,执行查询操作,并返回结果集
			} catch (SQLException e) {
				System.out.println("查询失败!");//调式
				e.printStackTrace();
				return null;
			}
		} else {
			System.out.println("查询语句为空!");//调式
			return null;
		}
	}
	/**
	 * 成员方法2:创建执行对象,执行更新操作
	 * @param sql
	 * @return
	 */
	public static int executeUpdate(String sql) {
		if (sql != null) {
			if (conn == null) {
				new BaseDao();// 加载驱动,并创建与数据库的连接对象
			}
			try {
//				return conn.createStatement().executeUpdate(ChangeString.GBKToISO(sql));// 创建执行对象,执行更新操作,并返回1
				return conn.createStatement().executeUpdate(sql);// 创建执行对象,执行更新操作,并返回1
			} catch (SQLException e) {
				System.out.println("更新失败!");//调式
				e.printStackTrace();
				return -1;
			}
		} else {
			System.out.println("更新语句为空!");//调式
			return -1;
		}
	} 
     
                    
                

 加入QQ群
        加入QQ群
     QQ联系我
        QQ联系我
     微信公众号
        微信公众号
     在线联系站长
        在线联系站长
    





 
                        

 
             
             
             
             
                 
                 
    
 
     
     
     
   
                     
                    
                 
                     
                    
暂无评论内容