图书管理系统项目
第一天:准备把整个框架顺一遍,第一次独立写这个算是我人生中第一个java小项目,不清楚多少天能完成,我会坚持把自己的心得写在这里,主要是给自己看(不是学文的,文笔很差见谅,争取把注释写详细点),如果能帮助其他初学者更好了 一起加油!
DriverManager.getConnection(String url,String user,String password) 我之前不太理解 特意查了下API


第一天搭建一个数据库实现基本功能 (因为前三步都需要连接数据库,定义一个数据库连接)
在类中创建一个构造函数初始化数据库的连接
(PS: 为什么要创建数据库,为了初始化数据库,在后面会经常用的到)
1.创建数据库 createDatabase()
2.创建表 createTable()
3.创建文件 addData(String filename)
我标记红色的请留意
package javastudy;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
public class DBLib {
//因为三个方法都需要连接数据库
Connection conn; //定义一个变量
Statement st;
public DBLib() throws ClassNotFoundException//定义一个构造函数 初始化数据库连接
, SQLException
{
Class.forName("com.mysql.jdbc.Driver"); //加载驱动程序
//需要得到三个参数
String url="jdbc:mysql://127.0.0.1:3306?useUnicode=true&characterEncoding=utf-8";//本机ip地址 本机端口 防止数据库乱码(若无乱码无须添加)
String user="root"; //数据库的名字
String pwd="521125"; //数据库密码
conn=(Connection) DriverManager.getConnection(url, user, pwd); //初始化数据库 拿到三个参数
st=(Statement) conn.createStatement(); //创建一个 Statement 对象来将 SQL 语句发送到数据库。
}
public void createDatabase() throws SQLException //创建一个数据库
{
String sql="drop database if exists Book;"; //判断数据库存在删除
st.executeUpdate(sql);//执行给定 SQL 语句
sql="create database Book;"; //创建表
st.executeUpdate(sql);//执行
}
public void createTable() throws SQLException //创建一个表
{
String sql="use Book;";//使用表
st.executeQuery(sql);//执行
sql="create table BOOKS";
sql+="(";
sql+=" ID int(4) not null primary key auto_increment,";
sql+=" Name varchar(100),";
sql+=" Author varchar(50),";
sql+=" Price decimal,";
sql+="Publisher varchar(100)";
sql+=") ENGINE=InnoDB DEFAULT CHARSET=utf8;";//我额外加的 因为我安装数据库未设置UTF-8 出现乱码
st.executeUpdate(sql);//执行语句
}
public void addData(String filename) throws SQLException//创建一个文档
, IOException
{
String sql="use Book;";//使用表
st.executeUpdate(sql);//执行
FileReader fr=new FileReader(filename); //读取
BufferedReader br=new BufferedReader(fr); //缓冲区(包装类)
String line;
sql=" INSERT INTO BOOKS (Name,Author,Price,Publisher) VALUES(?,?,?,?)"; //sql语句
PreparedStatement ps=conn.prepareStatement(sql);
while((line=br.readLine())!=null) //判断是否读完
{
String[] values=line.split(","); //以逗号拆分 用一个字符串数组接收
ps.setString(1, values[0]); //字段从1数组从0开始
ps.setString(2, values[1]);
ps.setDouble(3, Double.parseDouble(values[2]));//把字符串强制 转换Double
ps.setString(4, values[3]);
st.executeUpdate(sql);//执行
}
br.close(); //关闭资源
}
}
2.创建一个init 初始化测试创建数据库是否成功
第一个问题:
遇到一个错误 创建数据实现,无法向里面加入数据,显示代码错误
解决方法:
由于粗心,和对代码的不熟悉浪费了十分钟去查错误,特意去看了API把
1.executeUpdate() 2.executeQuery();
上面错误代码我没有修改!复制时需要注意
第二个问题 数据库在创建时 生成的不是utf-8
解决方法1:
第3个问题 导入文字出现乱码
解决方法1:去根目录找文件把属性改成utf-8 C:\Users\Administrator\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\图书管理项目 (未成功)
解决方案2:去官网找了一篇大佬的资料
jsp用来显示结果,用来做页面呈现
逻辑处理用Servlet来做。
jsp:用来显示结果
<%@ page language="java" contentType="text/