JDBC的連線mysql與增刪查改(二)
阿新 • • 發佈:2018-12-21
上一篇部落格寫到如何連線資料庫和增刪查改,但是每一次操作都需要寫一個類,體現不到類的封裝性,這篇部落格講詳細介紹到如何封裝類,並快速實現增刪查改。
前提準備:
1.建包
com.tao.entity 用於盛放實體類
com.tao.dao 用於介面的實現類
com.tao.test 用於測試類
2.建表
通過mysql,在school資料庫下建立person表,
欄位有id(int),name(varchar),pass(varchar),birthday(date)
BaseDao是一個基類,裡面寫好了一個連線資料庫的方法connect()和一個 關閉資源的方法closeAll();其他介面的實現類繼承這個類,並呼叫他的方法即可。
BaseDao.java
package com.tao.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; public class BaseDao { protected Connection conn = null; protected Statement stmt = null; protected ResultSet rs = null; protected String url = "jdbc:mysql://localhost:3306/school?characterEncoding=utf-8"; protected String name = "root"; protected String password = "root"; protected PreparedStatement pstmt=null; public void connect(){ try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection(url, "root", "root"); stmt = conn.createStatement(); } catch(Exception e) { e.printStackTrace(); } } public void closeAll(){ try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } if(pstmt!=null){ pstmt.close(); } }catch(Exception e) { } } } 插入程式碼片
接下來,我們可以建立一個person類
Person.java
package com.tao.entity; import java.util.Date; public class Person { private int id; private String name; private String pass; private String birthday; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } @Override public String toString() { return "Person [id=" + id + ", name=" + name + ", pass=" + pass + ", birthday=" + birthday + "]"; } }
然後寫PersonDao類,這個類繼承BaseDao,實現增刪查改的方法
package com.tao.dao;
import com.tao.entity.Person;
public class PersonDao extends BaseDao {
/*
* 登入
*/
public Person dologin(String name, String pass) {
Person s = null;
try {
super.connect();
// String sql = "select * from person where name='" + name
// + "' and pass='" + pass + "'";
// rs = stmt.executeQuery(sql);
String sql="select * from person where name=? and pass=?";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, name);
pstmt.setString(2, pass);
rs=pstmt.executeQuery();
while (rs.next()) {
s = new Person();
s.setId(rs.getInt(1));
s.setName(rs.getString(2));
s.setPass(rs.getString(3));
s.setBirthday(rs.getString(4));
}
} catch (Exception e) {
// TODO: handle exception
}
return s;
}
/*
* 刪除
*/
public int delete(int id){
int row=0;
try {
super.connect();
String sql="delete from person where id="+id;
row=stmt.executeUpdate(sql);
} catch (Exception e) {
// TODO: handle exception
}
return row;
}
/*
* 插入
*/
public int insert(Person p){
int row=0;
try {
super.connect();
// String sql="insert into person values("+p.getId()+",'"+p.getName()+"','"+p.getPass()+"','"+p.getBirthday()+"')";
// row=stmt.executeUpdate(sql);
String sql="insert into person(name,pass,birthday) values(?,?,?)";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, p.getName());
pstmt.setString(2, p.getPass());
pstmt.setString(3, p.getBirthday());
row=pstmt.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
return row;
}
/*
* 查詢一個人
*/
public Person get(int id) {
Person s = null;
try {
super.connect();
String sql = "select * from person where id="+id;
rs = stmt.executeQuery(sql);
while (rs.next()) {
s = new Person();
s.setId(rs.getInt(1));
s.setName(rs.getString(2));
s.setPass(rs.getString(3));
s.setBirthday(rs.getString(4));
}
} catch (Exception e) {
// TODO: handle exception
}
return s;
}
/*
* 修改
*/
public int update(Person p){
int row=0;
try {
super.connect();
String sql="update person set name='"+p.getName()+"',pass='"+p.getPass()+"', birthday='"+p.getBirthday()+"' where id="+p.getId();
row=stmt.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
}
return row;
}
}
最後寫測試類,測試結果
TestP.java
package com.tao.test;
import com.tao.dao.PersonDao;
import com.tao.entity.Person;
public class TestP {
public static void main(String[] args) {
/*
* 登入測試
*/
PersonDao pdao = new PersonDao();
Person p1 = pdao.dologin("jack", "1' or'1'='1");
if (p1 == null) {
System.out.println("登入失敗");
} else {
System.out.println("登陸成功");
System.out.println(p1);
}
/*
* 刪除測試
*/
int row = pdao.delete(5);
if (row > 0) {
System.out.println("del success..");
} else {
System.out.println("del failed");
}
/*
* 插入測試
*/
/*Person p2 = new Person();
p2.setName("xiaoliu");
p2.setPass("xiaoliu");
p2.setBirthday("2018-8-18");
int r=pdao.insert(p2);
if (r > 0) {
System.out.println("insert success..");
} else {
System.out.println("insert failed");
}*/
/*
* 查詢一個獲取學生並修改姓名
*
*/
Person p3 = new Person();
p3 = pdao.get(3);
p3.setName("tom1");
int rr = pdao.update(p3);
if (rr > 0) {
System.out.println("update success..");
} else {
System.out.println("update failed");
}
}
}