jsp中数据库访问【CRUD操作】模块总结


本博客分为三个部分:
一、CRUD各个操作具体代码示例
二、对CRUD操作的总结
三、CRUD操作源码【Javabean】



一、CRUD各个操作具体代码示例
1.添加数据

String sql="insert into books(name,price,bookCount,author) values(?,?,?,?);
PreparedStatement ps=conn.preparedStatement(sql);//获取PreparedStatement对象;
ps.setString(1,book.getName());//对sql语句中的第一个参数赋值;
ps.setDouble(2,book.getPrice());
ps.setInt(3,book.getBookCount());
ps.setString(4,book.getAuthor());
int row=ps.executeUpdate();//执行更新操作。返回影响的行数;

2.查询数据

Statement stmt = conn.createStatement();// 获取Statement
String sql = "select * from tb_books";// 添加图书信息的SQL语句
ResultSet rs = stmt.executeQuery(sql);// 执行查询
或者:
String sql = "select * from tb_books";// 添加图书信息的SQL语句
PreparedStatement stmt=conn.preparedStatement(sql);//获取PreparedStatement对象
ResultSet rs = stmt.executeQuery();// 执行查询
*注意sql的引用顺序*

3.修改数据

PreparedStatement ps = conn.prepareStatement(sql);// 获取PreparedStatement
ps.setInt(1, bookCount);// 对SQL语句中的第一个参数赋值
ps.setInt(2, id);// 对SQL语句中的第二个参数赋值
ps.executeUpdate();// 执行更新操作

4.删除数据

PreparedStatement ps = conn.prepareStatement(sql);// 获取PreparedStatement
ps.setInt(1, id);// 对SQL语句中的第一个占位符赋值
ps.executeUpdate();// 执行更新操作

二、对CRUD操作的总结
1.JDBC访问数据库的步骤
a:导入java.sql包;
b:加载数据库驱动程序;
c:定义数据库的连接对象地址,用户名,密码;
d:得到与数据库的连接对象;
e:声明sql语句;
f:得到语句对象;
g:执行sql语句;
h:处理sql语句的返回结果;
i:关闭对象;
2.规律总结
a:每一个操作都可以用PreperdStatement对象获得语句对象;
b:可以对这四个操作进行分类:查询一类,非查询一类;
c:非查询过程:
首先,用PreperdStatement对象获得语句对象;
然后,对sql语句中的占位符赋值;
最后,用ps.executeUpdate();方法执行更新操作
d:查询过程:
首先,用PreperdStatement对象获得语句对象;
然后,用stmt.executeQuery();方法执行查询并将结果赋值给ResultSet对象;
e:注意:在用用PreperdStatement对象获得语句对象时,要传入sql参数;

三、CRUD操作源码【Javabean】

package util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class DBUtil {
    private String driver;
    private String url;
    private String username;
    private String password;
    private Connection con;
    private PreparedStatement pstmt;
    private ResultSet rs;
    public void setDriver(String driver) {
        this.driver = driver;
    }
    public void setUrl(String url) {
        this.url = url;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    //构造方法,定义驱动程序连接用户名和密码信息
    public DBUtil(){
      driver="com.mysql.jdbc.Driver";
      url="jdbc:mysql://localhost:3306/book";
      username="root";
      password="root";
    }
    // 获取连接对象
    private Connection getConnection() {
        try {
            Class.forName(driver);
            con = DriverManager.getConnection(url, username, password);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return con;
    }
    // 获取语句对象
    private PreparedStatement getPrepareStatement(String sql) {
        try {
            pstmt = getConnection().prepareStatement(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return pstmt;
    }
    // 给pstmt的SQL语句设置参数(要求参数以数组形式给出)
    private void setParams(String sql, String[] params) {
        pstmt = this.getPrepareStatement(sql);
        if(params != null){
            for (int i = 0; i < params.length; i++){
                try {
                    pstmt.setString(i + 1, params[i]);
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }       
        }
    }
    // 执行数据库查询操作时,将返回的结果封装到List对象中
    public List getList(String sql, String[] params){
        List list = new ArrayList();
        try {
            this.setParams(sql, params);
            ResultSet rs = pstmt.executeQuery();
            ResultSetMetaData rsmd = rs.getMetaData();
            while(rs.next()) {
                Map m = new HashMap();
                for (int i = 1; i <= rsmd.getColumnCount(); i++) {
                   String colName = rsmd.getColumnName(i);
                   m.put(colName, rs.getString(colName));
                }
                list.add(m);
            }
         } catch (SQLException e) {
            e.printStackTrace();
         }finally{
            close();
        }
        return list;
    }
    // 执行数据库查询操作时,将返回的结果封装到List对象中
    public Map getMap(String sql, String[] params){
        List list=getList(sql, params);
        if(list.isEmpty())
            return null;
        else
            return (Map)list.get(0);

    }
    // 更新数据库时调用的update方法
    //添加数据和删除数据都可以用这个函数
    public int update(String sql, String[] params) {
        int recNo = 0;// 表示受影响的记录行数
        try {
            setParams(sql, params);// 根据sql语句和params,设置pstmt对象
            recNo = pstmt.executeUpdate();// 执行更新操作
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            close();
        }
        return recNo;
    }
    // 关闭对象
    private void close() {
        try {
            if (rs != null)
                rs.close();
            if (pstmt != null)
                pstmt.close();
            if (con != null)
                con.close();
        } catch (SQLException e) {
        }
    }
}

猜你喜欢

转载自blog.csdn.net/dglsx123/article/details/78401582