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) {
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值