JDBC(Java資料庫連線)
阿新 • • 發佈:2018-12-20
Stu類:存表中記錄
package cn.jdbc.entity; import java.io.Serializable; public class Stu implements Serializable{ private String sid; private String sname; private Integer age; private String gender; public Stu() { super(); } public Stu(String sid, String sname, Integer age, String gender) { super(); this.sid = sid; this.sname = sname; this.age = age; this.gender = gender; } public String getSid() { return sid; } public void setSid(String sid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } }
操作資料庫的 java程式碼
package cn.jdbc.dao; import java.util.List; import cn.jdbc.entity.Stu; public interface StudentDao { /** * 查詢所有學生資訊 * @return */ List<Stu>getUsersList(); /** * 根據學號和姓名獲取資訊 * @param name * @param id * @return */ Stu getStu(String id,String name); /** * 模糊查詢學生資訊 * @param name * @return */ List<Stu> getUserListLikeName(String name); /** * 插入學生資訊 * @param stu * @return */ Boolean insert(Stu stu); /** * 刪除學生資訊 * @param stu * @return */ Boolean delete(String sname); /** * 修改學生資訊 */ Boolean update(String sid,Integer Sage); }
3. 實現StudentDao介面的實現類
package cn.jdbc.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import java.sql.*; import com.mysql.jdbc.PreparedStatement; import cn.jdbc.entity.Stu; public class StudentDaoImpl extends BaseDao implements StudentDao { private final String URL="jdbc:mysql://localhost:3306/db_person"; private final String USENAME="root"; private final String PASSWORD="123yeszjingqi"; private final String DRIVE="com.mysql.jdbc.Driver"; public List<Stu> getUsersList() { Connection conn=null; Statement stmt=null; ResultSet rs=null; List <Stu> stulist =new ArrayList<Stu>(); try { //1.載入(mysql)jdbc驅動包 Class.forName("com.mysql.jdbc.Driver"); //2.建立資料庫連線物件 conn = DriverManager.getConnection(URL, USENAME, PASSWORD); //sql語句 String sql="select `sid`,`sname`,`age`,`gender` from stu"; //3.建立執行sql語句物件 stmt=conn.createStatement(); //4.執行查詢,返回結果集物件ResultSet rs=stmt.executeQuery(sql); Stu stud=null; while (rs.next()){ stud = new Stu(rs.getString(1), rs.getString("sname"), rs.getInt("age"), rs.getString("gender")); stulist.add(stud); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ //5.釋放資源 if(rs!=null){ try { rs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(stmt!=null){ try { stmt.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(conn!=null){ try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } return stulist; } @Override public Stu getStu( String id,String name) { Connection conn=null; Statement stmt=null; ResultSet rs=null; Stu stud=null; //1.載入(mysql)jdbc驅動包; try { Class.forName(DRIVE); //2.建立資料庫連線物件 conn=DriverManager.getConnection(URL,USENAME,PASSWORD); // System.out.println(name+"---"+id); String sql="select * from stu where sid='"+id+"'and sname='"+name+"'"; //3.建立state物件執行sql語句。 stmt=conn.createStatement(); //4執行查詢,返回結果集物件ResultSet rs=stmt.executeQuery(sql); while(rs.next()){//遍歷每行 stud = new Stu(rs.getString(1),//每行的每個元素 rs.getString("sname"), rs.getInt("age"), rs.getString("gender")); } } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ if(rs!=null){ try { rs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(stmt!=null){ try { stmt.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(conn!=null){ try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } return stud; } @Override public List<Stu> getUserListLikeName(String name) { Connection conn=null; java.sql.PreparedStatement stmt=null; ResultSet rs=null; List <Stu> stulist =new ArrayList<Stu>(); try { //1.載入(mysql)jdbc驅動包 Class.forName("com.mysql.jdbc.Driver"); //2.建立資料庫連線物件 conn = DriverManager.getConnection(URL, USENAME, PASSWORD); //sql語句 String sql="select `sid`,`sname`,`age`,`gender` from stu where sname like ?"; //3.建立執行sql語句物件 stmt=conn.prepareStatement(sql); stmt.setString(1,"%"+name+"%"); //4.執行查詢,返回結果集物件ResultSet rs=stmt.executeQuery(); Stu stud=null; while (rs.next()){// stud = new Stu(rs.getString(1), rs.getString("sname"), rs.getInt("age"), rs.getString("gender")); stulist.add(stud); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ //5.釋放資源 if(rs!=null){ try { rs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(stmt!=null){ try { stmt.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(conn!=null){ try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } return stulist; } @Override public Boolean insert(Stu stu) { Connection conn=null; java.sql.PreparedStatement stmt=null; ResultSet rs=null; Boolean flag=false; try { //1.載入(mysql)jdbc驅動包 Class.forName("com.mysql.jdbc.Driver"); //2.建立資料庫連線物件 conn = DriverManager.getConnection(URL, USENAME, PASSWORD); //sql語句 String sql="insert into `stu`(`sid`,`sname`,`age`,`gender`)" +"values (DEFAULT,?,?,?)";//default預設 自增長 //3.建立執行sql語句物件 stmt=conn.prepareStatement(sql); stmt.setString(1,stu.getSname()); stmt.setInt(2,stu.getAge()); stmt.setString(3, stu.getGender()); //4.執行插入,返回受影響行數 int num =stmt.executeUpdate(); flag=num>0?true:false; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ //5.釋放資源 if(rs!=null){ try { rs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(stmt!=null){ try { stmt.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(conn!=null){ try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } return flag; } @Override public Boolean delete(String sname) { Connection conn =null; PreparedStatement stmt=null; Boolean flag=false; try { conn=getConn(); String sql="delete from stu where ` = ?"; stmt=(PreparedStatement) conn.prepareStatement(sql); stmt.setString(1, sname); flag=stmt.executeUpdate()> 0 ? true:false; } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); }finally{ close(conn,stmt,null); } return flag; } @Override public Boolean update(String sid ,Integer age) { Connection conn =null; PreparedStatement stmt=null; Boolean flag=false; try { conn=getConn(); String sql="update stu set `age` = ? where `sid`= ? "; stmt=(PreparedStatement) conn.prepareStatement(sql); stmt.setInt(1, age); stmt.setString(2, sid); flag=stmt.executeUpdate()> 0 ? true:false; } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); }finally{ close(conn,stmt,null); } return flag; } }
把重複程式碼寫進 工具類
package cn.jdbc.dao;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.jdbc.PreparedStatement;
/**
* 工具類
* @author 123
*
*/
public class BaseDao implements Serializable{
private final String URL="jdbc:mysql://localhost:3306/db_person";
private final String USENAME="root";
private final String PASSWORD="123yeszjingqi";
private final String DRIVE="com.mysql.jdbc.Driver";
static{
//1.載入(mysql)jdbc驅動包
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @param args
*/
/**
* 獲取資料庫的連線資源
* @return
*/
public Connection getConn(){
Connection conn=null;
//2.建立資料庫連線物件
try {
conn = DriverManager.getConnection(URL, USENAME, PASSWORD);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
/**
* 釋放資源,
* 釋放順序必須 從後往前釋放
* @param conn
* @param stmt
* @param rs
*/
public void close(Connection conn,PreparedStatement stmt,ResultSet rs){
try{
if(rs!=null){
rs.close();
}
if(stmt!=null){
stmt.close();
}
if(conn!=null){
conn.close();
}
}catch(SQLException e){
e.printStackTrace();
}
}
}
測試類:
package cn.jdbc.test;
import java.util.List;
import cn.jdbc.dao.StudentDao;
import cn.jdbc.dao.StudentDaoImpl;
import cn.jdbc.entity.Stu;
public class Client {
public static void main(String[] args) {
StudentDao stuDao=new StudentDaoImpl();
// List<Stu>stulist =stuDao.getUsersList();
// System.out.println(stulist.size());
//查詢學號為1001,姓名為liu的同學的性別
/*
Stu stu=stuDao.getStu( "1001","liu");
System.out.println("stu的性別:"+stu.getGender());
//查詢姓名為zhang的有幾個
List<Stu>stulist =stuDao.getUserListLikeName("zhang");
System.out.println(stulist.size());
*/
//加入一條資訊:
Stu stu=new Stu();
stu.setSname("heeh");
stu.setAge(16);
stu.setGender("female");
if(stuDao.insert(stu)){
System.out.println("插入成功!");
}
//刪除一條資訊
/*
Stu stu=stuDao.getStu(null, "lia");
System.out.println("性別:"+stu.getGender());
if(stu!=null&&stuDao.delete(stu.getSname())){
System.out.println("刪除成功!");
}
*/
//修改
/*
Stu stu=stuDao.getStu("1004", "li");
stu.setAge(10);
if(stu!=null&&stuDao.update(stu.getSid(),stu.getAge())){
System.out.println("修改成功!");
}*/
}
}