购物车(⼀)展⽰商品,以及将商品加⼊购物车,jdbc连接oracle数据库(⽤连
接池)
功能描述
前期准备
(1)应⽤Oracle数据库
(2)向数据库中添加商品(从页⾯添加到数据库)
(3)将商品展⽰到jsp页⾯
(4)当⽤户点击“购买”时,将该商品添加到购物车
购物车操作
(1)创建购物车
(2)将商品放⼊购物车
(3)当⽤户点击同⼀个商品时,使购物车中的对应商品⾃动加1
(4)⽤户可以修改商品的数量
(5)⽤户可以清除购物车中的某个商品
(6)购物车⾃动计算每⼀种商品的价格
(7)购物车⾃动计算购物车中所有商品的总价格
(8)⽤户可以清空购物车中的所有商品
(1)在Oracle数据库创建商品表格
商品编号,商品名称,商品数量(不是购物车中的,⽽是数据库中的),原价,现价,图⽚
create table produce(
proid int primary key,
proname varchar2(50),
procount int,
oldprice number,
nowprice number,
address varchar2(30),
img varchar2(100)
)
数据库底层操作(即⽤jdbc连接数据库)
(1)存放键值对的⽂件
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:orcl
username=scott
userpass=tiger
(2)在db包中⽤DBHelper连接Oracle数据库
package com.ruide.db;
import java.beans.PropertyVetoException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
hange.v2.c3p0.ComboPooledDataSource;
public class DBHelper {
public static ComboPooledDataSource ds;//oracle数据库连接池类
public static ComboPooledDataSource ds;//oracle数据库连接池类
static{
ds=new ComboPooledDataSource();//创建连接池对象
InputStream in=ClassLoader().getResourceAsStream("db.properties"); Properties pro=new Properties();
try {
pro.load(in);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String Property("driver");
String Property("url");
String Property("username");
String Property("userpass");
try {
ds.setDriverClass(driver);
} catch (PropertyVetoException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ds.setJdbcUrl(url);
ds.setUser(username);
ds.setPassword(userpass);
}
}
在db包中⽤DBManager封装结果集
package com.ruide.db;
import java.sql.Connection;
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;
import com.ruide.mapper.IMapper;
public class DBManager{
Connection conn=null;
PreparedStatement pstm=null;
ResultSet rs=null;
public Connection getconn()throws SQLException{
//返回连接池对象
return Connection();
}
/
/1增删改函数
public int executeUpdate(String sql,Object[]params)throws SQLException{
//建连接
try {
n();
//建预处理通道
pstm=conn.prepareStatement(sql);
if(params!=null){
for (int i = 0; i < params.length; i++) {
pstm.setObject(i+1, params[i]);
}
}
//执⾏sql
int uteUpdate();
int uteUpdate();
return result;
} catch (SQLException e) {
e.printStackTrace();
throw e;
}finally{
try {
pstm.close();
conn.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//2对象查询函数
public List executeQueryObjectList(String sql,Object[]params,IMapper map)throws SQLException{ try {
//建连接
n();
/
/建通道
pstm=conn.prepareStatement(sql);
//sql语句绑定数据
if(params!=null){
for(int i=0;i<params.length;i++){
pstm.setObject(i+1, params[i]);
}
}
//得到结果集
uteQuery();
//封装结果集
List list=map.mapper(rs);
return list;
} catch (SQLException e) {
e.printStackTrace();
throw e;
}finally{
try {
rs.close();
pstm.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
//3总条数查询
public int executeTotal(String sql,Object[]params)throws SQLException{
try {
//建连接
n();
//建预处理通道
pstm=conn.prepareStatement(sql);
/
/sql语句绑定数据
if(params!=null){
for (int i = 0; i < params.length; i++) {
pstm.setObject(i+1, params[i]);
java的jdbc连接数据库}
}
//得到结果集
uteQuery();
//处理结果集
<();
int Int(1);
return total;
} catch (SQLException e) {
} catch (SQLException e) {
e.printStackTrace();
throw e;
}finally{
try {
rs.close();
pstm.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
//4.List集合的数组⽅式封装结果集
public List<Object[]> executeQueryArrayList(String sql,Object[] params)throws SQLException{
try {
n();
pstm=conn.prepareStatement(sql);
if(params!=null){
for (int i = 0; i < params.length; i++) {
pstm.setObject(i+1, params[i]);
}
}
uteQuery();
ResultSetMetaData MetaData();
int ColumnCount();
List<Object[]> list=new ArrayList<Object[]>();
()){
Object[] obj=new Object[count];
for (int i = 0; i < obj.length; i++) {
obj[i]=rs.getObject(i+1);
}
list.add(obj);
}
return list;
} catch (SQLException e) {
e.printStackTrace();
throw e;
}finally{
try {
rs.close();
pstm.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
//5.List集合的 HashMap⽅式封装结果集
public List<Map<String,Object>> executeQueryMapList(String sql,Object []params)throws SQLException{ try {
n();
pstm=conn.prepareStatement(sql);
if(params!=null){
for (int i = 0; i < params.length; i++) {
pstm.setObject(i+1, params[i]);
}
}
uteQuery();
ResultSetMetaData MetaData();
int ColumnCount();
List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
()){
Map<String,Object> map=new HashMap<String,Object>();
for (int i = 0; i < count; i++) {
String ColumnName(i+1);
String ColumnName(i+1);
Object Object(name);
map.put(name,values);
}
list.add(map);
}
return list;
} catch (SQLException e) {
e.printStackTrace();
throw e;
}finally{
try {
rs.close();
pstm.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
//6.⼆维数组⽅式封装数据
public Object[][] executeQueryArray(String sql,Object []params)throws SQLException{
try {
List<Object[]> uteQueryArrayList(sql, params);
Object[][] obj=new Object[list.size()][];
for(int i=0;i<obj.length;i++){
obj[i] =(i);
}
return obj;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw e;
}finally{
try {
rs.close();
pstm.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
DBManager的对象查询是在mapper包中封装的结果集
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论