PS1:这次还是连着上一篇,只不过这里将模拟数据库转为了mysql数据库,代码在这里没有提到的,就是说保持不变即可
————————————–无敌分割线—————————————–
这里要更改的内容其实只有
AuthorService.java这个文件
首先,在更改之前要把数据库配置好,首先要下载Mysql
mysql下载地址
下载安装版的比较好,大小选择385.1M的那个(到2016/9/27好用)
还要下载相应的DB Driver也就是JDBC
JDBC下载地址
下载Connector/J (因为我们用的java写的)
下载完后,mysql自行安装,这个不难,就照着要求一步一步安装就可以了
安装完之后出现两个图标(具体几个我就不知道,,我懒得卸了重装了,,)
打开左边那个
进入后出现如下界面,把之前设置的密码输入
这时候得到下图
然后我们创建一个叫做author的数据库
使用author数据库并在里面建立一个authors的表
这时候表里面还没有数据,所以我们要插入一个数据
现在数据库已经建好了,这时候要在ecplise里面配置JDBC
然后为了预防万一,我们把这个jdbc同时也扔到lalala项目中的lib中
这时候就可以连接数据库了,点击File->new->other..输入如图,找到connection profile
进去后,这里要注意,要把所有的database改成自己建的那个数据库,例如我们这里建的是叫做author的数据库
注意一共有三个地方要修改,而且密码是之前Mysql的密码
建立完成后我们可以看到
这意味着已经将数据库连接到ecplise上了
好了,我们可以开始将之前那篇博客上面的模拟数据库换成MySQL数据库了
下面贴出修改的代码
1-welcome.jsp中(这个是我的失误,两个对应的变量大小不同) 把author.AuthorID改成author.authorID(因为数据库里面是小写的)
密码 :<input type="text" name="author.authorID"/><br/>
2-AuthorService.java
package service;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.PreparedStatement;
import domin.Author;
public class AuthorService {
public Integer validateAuthor(Author author) {
Connection conn = getConn();
String sql = "select * from authors";//对数据库中的authors表进行扫描
PreparedStatement pstmt;
System.out.println("0000");
try {
pstmt = (PreparedStatement)conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while(rs.next()){//rs是按照authors表中,从上往下一个一个数下来,如果跟author一样,则返回1表示找到了,这个author是从前端传到后端的,待会儿会说在哪儿
if(rs.getString(1).equals(author.getAuthorID())&&rs.getString(2).equals(author.getName()))
return 1;
}
pstmt.close();//记得用完数据库要把数据库关掉
conn.close();
return -1;
} catch (SQLException e) {
e.printStackTrace();
}
return -1;
}
private static Connection getConn() {//获得数据库,写成一个函数,省的每次调用数据库都重复写一遍,只需要调用这个函数就可以了
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/author";
String username = "root";
String password = "这里写的是你的mysql密码";
Connection conn = null;
try {
Class.forName(driver); //classLoader,加载对应驱动
conn = (Connection) DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
这样就能成功的把MySQL数据库替换掉之前的那个模拟数据库了。
哦对了,注释里面有说这个author是从哪儿来的,他是从前端中就是welcome.jsp中的
<form action="AuthorPro" method="post">
用户名:<input type="text" name="author.name"/><br/>
密码 :<input type="text" name="author.authorID"/><br/>
<input type="submit" value="登陆"/>
</form>
name=author.name 和name=author.ID里面的author来的,后台用的autho.getAuthorID是调用的Lab2.domin中的Author.java里面的方法。
给出时间证明不是假的数据
PS2(对应的插入,删除,修改语句只要更改相应的sql的内容即可,我在这里就不写了,要是实在是不清楚怎么写插入删除修改的话,可以留言告诉我,我再更新)
PS3(还是我的失误,这里要把Author.java里面age类型改成int类型,之前偷懒用String类型,虽然这里并不影响结果,但是改改总是好的)