JAVA WEB JDBC連線資料庫
阿新 • • 發佈:2018-11-04
桂 林 理 工 大 學
實 驗 報 告
班級 軟體16-1班 學號 3162052051116 姓名 張識虔 同組實驗者
實驗名稱 JDBC訪問資料庫 日期 2018年 10 月24 日
一、實驗目的:
理解JDBC的工作原理,掌握JDBC訪問資料庫;
掌握常見資料庫MYSQL ;
二、實驗環境:
三、實驗內容:
現在使用JDBC寫一個簡單的小程式,主要是使用JDBC連線MySQL資料庫,然後對資料庫進行一些基本的增刪改查操作。
定義實體類
UserVO.java package bean; import java.util.Date; public class UserVO { private int id; private String userName; private int age; private int sex; private Date createDt; public int getId(){ return id; } public void setId(int id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getSex() { return sex; } public void setSex(int sex) { this.sex = sex; } public Date getCreateDt() { return createDt; } public void setCreateDt(Date createDt) { this.createDt = createDt; } @Override public String toString() { return "UserVO [id=" + id + ", userName=" + userName + ", age=" + age + ", sex=" + sex + ", createDt=" + createDt + "]"; } }
定義資料庫連線類
DBUtil.java package bean; import java.sql.Connection; import java.sql.DriverManager; public class DBUtil { private static final String URI = "jdbc:mysql://182.91.133.2:3306/z?" ///182.91.133.2是本地的IP地址 可以百度IP就可以顯示 z是資料庫名 + "user=root&password=123&useUnicode=true&characterEncoding=UTF-8"; //user 是賬號 password是密碼 private static final String DRIVER = "com.mysql.jdbc.Driver"; public static Connection connectDB() throws Exception { //1、載入資料庫驅動 Class.forName(DRIVER); //2、獲取資料庫連線 Connection conn = DriverManager.getConnection(URI); return conn; } }
實現執行的程式碼
UserDao.java
package bean;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class UserDao {
public List<UserVO> queryAll() throws Exception {
//查詢操作,查詢可以一次查詢出所有的資料,也可以根據相應的條件查詢。
查詢所有的資料
Connection conn = DBUtil.connectDB();
String sql = "SELECT * FROM tbl_user_info";
List<UserVO> userList = new ArrayList<UserVO>();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()) {
UserVO user = new UserVO();
user.setId(rs.getInt("id"));
user.setUserName(rs.getString("user_name"));
user.setAge(rs.getInt("age"));
user.setSex(rs.getInt("sex"));
user.setCreateDt(rs.getDate("create_dt"));
userList.add(user);
}
return userList;
}
public List<UserVO> queryByParams(List<Map<String, Object>> params) throws Exception {
//這個方法可以自由選擇查詢的條件,只需要向方法中傳入一個條件的List即可,這些條件都是由Map組成的,每一個Map包含三個元素,col表示查詢條件對應哪一列,rel表示查詢條件的關係是什麼,value是指查詢條件的值
Connection conn = DBUtil.connectDB();
StringBuilder sql = new StringBuilder("SELECT * FROM tbl_user_info WHERE 1=1 ");
for(Map<String, Object> param : params) {
sql.append(" and ");
sql.append(" " + param.get("col") + " ");
sql.append(" " + param.get("rel") + " ");
sql.append(" " + param.get("value") + " ");
}
System.out.println(sql.toString());
List<UserVO> userList = new ArrayList<UserVO>();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql.toString());
while(rs.next()) {
UserVO user = new UserVO();
user.setId(rs.getInt("id"));
user.setUserName(rs.getString("user_name"));
user.setAge(rs.getInt("age"));
user.setSex(rs.getInt("sex"));
user.setCreateDt(rs.getDate("create_dt"));
userList.add(user);
}
return userList;
}
public void addUser(UserVO user) throws Exception {
//增加的操作
Connection conn = DBUtil.connectDB();
String sql = "INSERT INTO tbl_user_info(user_name, age, sex, create_dt) "
+ " VALUES(?, ?, ?, ?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, user.getUserName());
pstmt.setInt(2, user.getAge());
pstmt.setInt(3, user.getSex());
pstmt.setDate(4, new Date(new java.util.Date().getTime()));
pstmt.execute();
}
public void deleteUser(int id) throws Exception {
//刪除的方法,根據使用者的id來刪除資料
Connection conn = DBUtil.connectDB();
String sql = "DELETE FROM tbl_user_info WHERE id = ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, id);
pstmt.execute();
}
public void updateUser(UserVO user) throws Exception {
//更新操作
Connection conn = DBUtil.connectDB();
String sql = "UPDATE tbl_user_info SET user_name=?, age=?, sex=?"
+ " WHERE id=?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, user.getUserName());
pstmt.setInt(2, user.getAge());
pstmt.setInt(3, user.getSex());
pstmt.setInt(4, user.getId());
pstmt.executeUpdate();
}
public static void main(String[] args) {
//增刪改的主函式程式碼放的地方
}
}
資料庫執行部分
Create database z; 建立資料庫
顯示資料庫
使用use z資料庫
建立一個表格
插入資料
顯示錶格
在MyEclipse執行結果
public static void main(String[] args) {
UserDao dao = new UserDao();
try {
List<UserVO> userList = dao.queryAll();
for(UserVO user : userList) {
System.out.println(user);
}
} catch (Exception e) {
e.printStackTrace();
}
}
條件查詢
public static void main(String[] args) {
UserDao dao = new UserDao();
List<Map<String, Object>> params = new ArrayList<Map<String,Object>>();
Map<String, Object> param1 = new HashMap<String, Object>();
param1.put("col", "user_name");
param1.put("rel", "like");
param1.put("value", "'%zhang%'"); //尋找zhang的名字
params.add(param1);
Map<String, Object> param2 = new HashMap<String, Object>();
param2.put("col", "sex");
param2.put("rel", "=");
param2.put("value", 1); //性別為1的
params.add(param2);
try {
List<UserVO> userList = dao.queryByParams(params);
for(UserVO user : userList) {
System.out.println(user);
}
} catch (Exception e) {
e.printStackTrace();
}
}
增加之後
public static void main(String[] args) {
UserDao dao = new UserDao();
UserVO user = new UserVO();
user.setUserName("xiaozi"); //增加的名字
user.setAge(0); //增加的歲數
user.setSex(1); //增加的性別
try {
dao.addUser(user);
} catch (Exception e) {
e.printStackTrace();
}
刪除之後
public static void main(String[] args) {
UserDao dao = new UserDao();
try {
dao.deleteUser(1); //刪除的ID為1
} catch (Exception e) {
e.printStackTrace();
}
}
更新 xiaozi的值
public static void main(String[] args) {
UserDao dao = new UserDao();
UserVO user = new UserVO();
user.setUserName("xiaozi"); //名字為 xiaozi
user.setAge(10); //更新歲數為10
user.setSex(1);
user.setId(4);
try {
dao.updateUser(user);
} catch (Exception e) {
e.printStackTrace();
}
}
四、心得體會: