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類型,雖然這裏並不影響結果,但是改改總是好的)