增刪改查的核心

增刪改查的核心

本人因爲經常要寫增刪改查,所以把它的核心發下帖,供大家參考:


這是一個工具包(簡化代碼):

package com.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;


import com.bean.Emp;
public class DbOperation {
protected Connection conn;//連接
protected PreparedStatement psmt;//預編譯
protected ResultSet rs;//結果集
private final String URL="jdbc:mysql://127.0.0.1:3306/ff";
private final String UNAME="root";
private final String PSW="root";

//連接數據庫
public void getConn(){
//加載驅動
try {
Class.forName("com.mysql.jdbc.Driver");
//獲得鏈接
conn=DriverManager.getConnection(URL,UNAME, PSW);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//關閉連接
public void closeAll(){
try {
if(conn!=null){
conn.close();
}
if(psmt!=null){
psmt.close();
}
if(rs!=null){
rs.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//查詢操作
public void extQuery(String sql,Object...obj){
try {
psmt =conn.prepareStatement(sql);//查詢sql語句
for(int i=0;i<obj.length;i++){
psmt.setObject((i+1), obj[i]);
}
rs=psmt.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//更新操作
public void extUpdate(String sql, Object...obj){
try {
psmt = conn.prepareStatement(sql);
for(int i=0; i<obj.length;i++){
psmt.setObject((i+1), obj[i]);
}
psmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//刪除操作
public int extDelete(String sql, Object...obj){
//查詢失敗
int count=-1;
try {
psmt = conn.prepareStatement(sql);
for(int i=0; i<obj.length;i++){
psmt.setObject((i+1), obj[i]);
}
count=psmt.executeUpdate();


} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return count;
}
}


我認爲Dao裏面的知識也是經常用到的:

package com.dao;


import java.sql.SQLException;
import java.util.ArrayList;


import com.bean.Emp;
import com.controller.deleteEmp;
import com.util.DbOperation;


public class EmpDao extends DbOperation{
//查詢數據
public ArrayList select(int nowpage,int pagesize,String param){
ArrayList al=new ArrayList();
getConn();//連接數據庫
if(param==null||param.equals("")){
String sql="select * from emp limit ?,?";//查詢sql語句
//給第一個?賦值
int start=(nowpage-1)*pagesize;
extQuery(sql, start, pagesize);
}else{
String sql="select * from emp where ename like ? limit ?,?";//查詢sql語句
//給第一個?賦值
int start=(nowpage-1)*pagesize;
extQuery(sql,"%"+param+"%", start, pagesize);
}
//處理結果集
try {
while(rs.next()){
Emp e=new Emp();
e.setEmpno(rs.getInt("empno"));
e.setEname(rs.getString("ename"));
e.setJob(rs.getString("job"));
e.setMgr(rs.getInt("mgr"));
e.setHiredate(rs.getDate("hiredate"));
e.setSal( rs.getInt("sal"));
e.setComm( rs.getInt("comm"));
e.setDeptno( rs.getInt("deptno"));
al.add(e);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return al;
}
//查詢數據總條數
public int getCount(String param){
int count=0;
getConn();
if(param==null||param.equals("")){
String sql="select count(*) from emp";
extQuery(sql);
}else{
String sql="select count(*) from emp where ename like ?";
extQuery(sql,"%"+param+"%");
}
try {
while(rs.next()){
count=rs.getInt(1);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
closeAll();
return count;

//得到最大頁碼號  中鐵
public int getMax(int pagesize,String param){
int maxpage=0;
maxpage=(int)Math.ceil((double)getCount(param)/(double)pagesize);
return maxpage;
}
//新增
public void add(Emp e){
//連接數據庫
getConn();
//執行sql
String sql="insert into emp(ename,job,mgr,hiredate,sal,comm,deptno) value(?,?,?,?,?,?,?)";
extUpdate(sql,e.getEname(),e.getJob(),e.getMgr(),e.getHiredate(),e.getSal(),e.getComm(),e.getDeptno());
//關閉連接
closeAll();
}
//刪除
public int delete(int empno){
//連接數據庫
getConn();
return extDelete("delete from emp where empno=?", empno);
}
//修改
//先查詢
public Emp get(int empno){
getConn();
String sql="select * from emp where empno=?";
extQuery(sql, empno);
Emp e=new Emp();
try {
if(rs.next()){
e.setComm(rs.getInt("comm"));
e.setDeptno(rs.getInt("deptno"));
e.setEmpno(rs.getInt("empno"));
e.setEname(rs.getString("ename"));
e.setHiredate(rs.getDate("hiredate"));
e.setJob(rs.getString("job"));
e.setMgr(rs.getInt("mgr"));
e.setSal(rs.getInt("sal"));
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
closeAll();
return e;
}

public void update(Emp e){
getConn();
String sql="update emp set ename=?,job=?,mgr=?,hiredate=?,sal=?,comm=?,deptno=? where empno=?";
extUpdate(sql,e.getEname(),e.getJob(),e.getMgr(),e.getHiredate(),e.getSal(),e.getComm(),e.getDeptno(), e.getEmpno());
closeAll();
}
}

最後再分享一個關於Date的小插件:My97DatePicker

下面是一個具體的案例:

1.把My97DatePicker工具放在webroot下面


2.調用它:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


<html>
  <head>
  <title>新增</title>
  <script language="javascript" type="text/javascript" src="My97DatePicker/WdatePicker.js"></script>
  </head>
  <body>
    <form action="${pageContext.request.contextPath }/addEmp" method="post">
    僱員姓名<input type="text" name="ename"/><br/>
      僱員職位<select name="job">
    <option value="CLERK">普通僱員</option>
    <option value="MANAGER">經理</option>
    <option value="ANALYST">分析師</option>
    <option value="SALESMAN">銷售員</option>
    <option value="PRESIDENT">總裁</option>
    </select><br/>
    僱員上級<input type="text" name="mgr"/><br/>
    入職日期<input class="Wdate" type="text" onClick="WdatePicker()" name="hiredate"  /><br/>
    僱員薪水<input type="text" name="sal"/><br/>
    僱員獎金<input type="text" name="comm"/><br/>
    部門編號<select name="deptno">
    <option value="10">10號部門</option>
    <option value="20">20號部門</option>
    <option value="30">30號部門</option>
    <option value="40">40號部門</option>
    </select><br/>
    <input type="submit" value="新增">
    </form>
  </body>
</html>

string換成Date類型,期間項目會報錯,解決方法:

emp.class:

public Date getHiredate() {
return hiredate;
}
public void setHiredate(String hiredate) {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
try {
this.hiredate=sdf.parse(hiredate);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void setHiredate(Date hiredate) {
this.hiredate=hiredate;
}
再添加數據頁面中:

package com.controller;


import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import com.bean.Emp;
import com.dao.EmpDao;
import com.util.WebUtil;


public class addEmp extends HttpServlet {
EmpDao ed=new EmpDao();

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request,response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//處理中文亂碼
request.setCharacterEncoding("utf-8");
//獲取表單數據  並封裝
Emp e=WebUtil.request2bean(request, Emp.class);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
try {
e.setHiredate(sdf.parse(request.getParameter("hiredate")));
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}



//把數據封裝到一個對象  重定向跳轉
ed.add(e);
response.sendRedirect("selectEmp");
}
}

此時,運行項目即可。如果有不明白的,請回復我,感謝你的觀看!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章