商城项目整理(三)JDBC增删改查
时间:2022-04-29
本文章向大家介绍商城项目整理(三)JDBC增删改查,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
商品表的增加,修改,删除,订单表的增加,确认,用户表的查看,日志表的增加,查看
商品表建表语句:
1 create table TEST.GOODS_TABLE
2 (
3 gid NUMBER not null,
4 gname VARCHAR2(90),
5 gdetails CLOB,
6 gpicture VARCHAR2(100),
7 gprice NUMBER,
8 gleixing NUMBER,
9 gpinpai VARCHAR2(20)
10 )
11 tablespace USERS
12 pctfree 10
13 initrans 1
14 maxtrans 255
15 storage
16 (
17 initial 64K
18 next 1M
19 minextents 1
20 maxextents unlimited
21 );
22 comment on column TEST.GOODS_TABLE.gid
23 is '商品ID';
24 comment on column TEST.GOODS_TABLE.gname
25 is '商品名称';
26 comment on column TEST.GOODS_TABLE.gdetails
27 is '商品详情';
28 comment on column TEST.GOODS_TABLE.gpicture
29 is '商品图片';
30 comment on column TEST.GOODS_TABLE.gprice
31 is '商品价格';
32 comment on column TEST.GOODS_TABLE.gleixing
33 is '商品类型';
34 comment on column TEST.GOODS_TABLE.gpinpai
35 is '商品品牌';
36 alter table TEST.GOODS_TABLE
37 add constraint PK_GOODSID primary key (GID)
38 using index
39 tablespace USERS
40 pctfree 10
41 initrans 2
42 maxtrans 255
43 storage
44 (
45 initial 64K
46 next 1M
47 minextents 1
48 maxextents unlimited
49 );
订单表建表语句:
1 create table TEST.SHOPORDER
2 (
3 scid VARCHAR2(10),
4 scuser VARCHAR2(20),
5 scgid VARCHAR2(15),
6 scnum NUMBER,
7 scmoney NUMBER,
8 sctime VARCHAR2(20),
9 sczt VARCHAR2(10)
10 )
11 tablespace SYSTEM
12 pctfree 10
13 pctused 40
14 initrans 1
15 maxtrans 255
16 storage
17 (
18 initial 64K
19 next 1M
20 minextents 1
21 maxextents unlimited
22 );
23 comment on column TEST.SHOPORDER.scid
24 is '订单号';
25 comment on column TEST.SHOPORDER.scuser
26 is '用户名';
27 comment on column TEST.SHOPORDER.scgid
28 is '商品ID';
29 comment on column TEST.SHOPORDER.scnum
30 is '商品数量';
31 comment on column TEST.SHOPORDER.scmoney
32 is '商品总价';
33 comment on column TEST.SHOPORDER.sctime
34 is '交易时间';
35 comment on column TEST.SHOPORDER.sczt
36 is '订单状态';
用户表建表语句:
1 create table TEST.USER_TABLE
2 (
3 userid NUMBER not null,
4 uname VARCHAR2(20),
5 upassword VARCHAR2(20),
6 unickname VARCHAR2(20),
7 uemail VARCHAR2(50),
8 utime VARCHAR2(30)
9 )
10 tablespace USERS
11 pctfree 10
12 initrans 1
13 maxtrans 255
14 storage
15 (
16 initial 64K
17 next 1M
18 minextents 1
19 maxextents unlimited
20 );
21 comment on column TEST.USER_TABLE.userid
22 is '用户id';
23 comment on column TEST.USER_TABLE.uname
24 is '用户名';
25 comment on column TEST.USER_TABLE.upassword
26 is '用户密码';
27 comment on column TEST.USER_TABLE.unickname
28 is '用户昵称';
29 comment on column TEST.USER_TABLE.uemail
30 is '用户邮箱';
31 comment on column TEST.USER_TABLE.utime
32 is '注册时间';
日志表建表语句:
1 create table TEST.SHOPLOG
2 (
3 pname VARCHAR2(30),
4 pugroup VARCHAR2(30),
5 puptime VARCHAR2(30),
6 pip VARCHAR2(30),
7 plog VARCHAR2(100)
8 )
9 tablespace SYSTEM
10 pctfree 10
11 pctused 40
12 initrans 1
13 maxtrans 255
14 storage
15 (
16 initial 64K
17 next 1M
18 minextents 1
19 maxextents unlimited
20 );
21 comment on column TEST.SHOPLOG.pname
22 is '用户名';
23 comment on column TEST.SHOPLOG.pugroup
24 is '用户组';
25 comment on column TEST.SHOPLOG.puptime
26 is '登陆时间';
27 comment on column TEST.SHOPLOG.pip
28 is 'IP';
29 comment on column TEST.SHOPLOG.plog
30 is '操作';
数据库链接驱动类:
1 package com.hanqi.util;
2
3 import java.sql.Connection;
4 import java.sql.DriverManager;
5 import java.sql.ResultSet;
6 import java.sql.SQLException;
7 import java.sql.Statement;
8
9 /**
10 * 数据库驱动连接类
11 * @author ZBK
12 */
13 public class DBHelper {
14 /**
15 * 数据库用户名
16 */
17 public static final String USERNAME = "test";
18 /**
19 * 数据库密码
20 */
21 public static final String PASSWORD = "test";
22 /**
23 * 数据库驱动类
24 */
25 public static final String DRIVER = "oracle.jdbc.OracleDriver";
26 /**
27 * 数据库地址URL
28 */
29 public static final String URL = "jdbc:oracle:thin:@localhost:1521:xe";
30
31 /**
32 * 获取数据库连接
33 * @return
34 */
35 public static Connection getConnection() {
36 Connection conn = null;
37 try {
38 Class.forName(DRIVER);
39 conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
40 } catch (ClassNotFoundException e) {
41 e.printStackTrace();
42 } catch (SQLException e) {
43 e.printStackTrace();
44 }
45 return conn;
46 }
47
48
49 /**
50 * 释放资源
51 * @param conn 数据库连接对象
52 * @param sm Statement对象
53 * @param rs ResultSet结果集对象
54 */
55 public static void destroy(Connection conn, Statement sm, ResultSet rs) {
56 if (conn != null) {
57 try {
58 conn.close();
59 } catch (SQLException e) {
60 e.printStackTrace();
61 }
62 conn = null;
63 }
64 if (sm != null) {
65 try {
66 sm.close();
67 } catch (SQLException e) {
68 e.printStackTrace();
69 }
70 sm = null;
71 }
72 if (rs != null) {
73 try {
74 rs.close();
75 } catch (SQLException e) {
76 e.printStackTrace();
77 }
78 rs = null;
79 }
80 }
81
82 /**
83 * 验证前台传入的参数是否为空
84 * @param args
85 * @return
86 */
87 public static boolean checkParam(String... args) {
88 for (String s : args) {
89 if (s == null || s.trim().length() < 1) {
90 return false;
91 }
92 }
93 return true;
94 }
95 }
数据库操作方法类:
1 package com.hanqi.dal;
2
3 import java.sql.Connection;
4 import java.sql.PreparedStatement;
5 import java.sql.ResultSet;
6 import java.sql.SQLException;
7 import java.util.ArrayList;
8 import java.util.Date;
9 import java.util.List;
10
11 import com.hanqi.model.Goods;
12 import com.hanqi.model.Log;
13 import com.hanqi.model.Order;
14 import com.hanqi.model.TradingStatusFile;
15 import com.hanqi.model.User;
16 import com.hanqi.util.DBHelper;
17
18 public class MethodDal {
19 private Connection conn;
20 private PreparedStatement ps;
21 private ResultSet rs;
22
23 private static int scnum=1000;
24 //初始化链接
25 public void init(String sql) {
26 conn = DBHelper.getConnection();
27 try {
28 ps = conn.prepareStatement(sql);
29 } catch (SQLException e) {
30 e.printStackTrace();
31 }
32 }
33 //释放资源
34 public void close(){
35 DBHelper.destroy(conn, ps, rs);
36 }
37 //判断传入的参数有没有空的方法,只要有空的就返回false
38 public boolean checkParam(String... args){//这样传参数代表参数个数不确定,传几个都可以
39 for(String s : args){
40 if("".equals(s)||s==null){
41 return false;
42 }
43 }
44 return true;
45 }
46 /**
47 * 返回所有商品
48 * @return
49 */
50 public List<Goods> getAllGoods(){
51 String sql = "select * from GOODS_TABLE g";
52 init(sql);
53 List<Goods> list = new ArrayList<Goods>();
54
55 try {
56 rs = ps.executeQuery();
57 while (rs.next()) {
58 Goods good=new Goods(rs.getInt(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getInt(5),rs.getInt(6),rs.getString(7));
59 list.add(good);
60 }
61 } catch (SQLException e) {
62 e.printStackTrace();
63 }
64 return list;
65 }
66 /**
67 * 增加一条商品信息
68 * @param g
69 * @return
70 */
71 public int insertGoods(Goods g) {
72 String sql = "insert into GOODS_TABLE values(tablexulie.nextval,?,?,?,?,?,?)";
73
74 init(sql);
75 int a = -1;
76 try {
77 ps.setString(1, g.getGname());
78 ps.setString(2, g.getGdetails());
79 ps.setString(3, g.getGpicture());
80 ps.setInt(4, g.getGprice());
81 ps.setInt(5, g.getGleixing());
82 ps.setString(6, g.getGpinpai());
83 a = ps.executeUpdate();
84 } catch (SQLException e) {
85 e.printStackTrace();
86 }
87 return a;
88 }
89 /**
90 * 删除商品信息
91 */
92 public int deleteGoods(int gid) {
93 String sql = "delete from GOODS_TABLE g where g.gid=? ";
94
95 init(sql);
96 int a = -1;
97 try {
98 ps.setInt(1, gid);
99 a = ps.executeUpdate();
100 } catch (SQLException e) {
101 e.printStackTrace();
102 }
103 return a;
104 }
105 //修改商品信息
106 public int UpdateGood(Goods g) {
107 String sql = "update GOODS_TABLE g set g.gname=?,g.gdetails=?,g.gpicture=?,g.gprice=?,g.gleixing=?,g.gpinpai=? where g.gid=?";
108 init(sql);
109 int a = -1;
110 try {
111 ps.setString(1, g.getGname());
112 ps.setString(2, g.getGdetails());
113 ps.setString(3, g.getGpicture());
114 ps.setInt(4, g.getGprice());
115 ps.setInt(5, g.getGleixing());
116 ps.setString(6, g.getGpinpai());
117 ps.setInt(7, g.getGid());
118 a = ps.executeUpdate();
119 } catch (SQLException e) {
120 e.printStackTrace();
121 }
122 return a;
123 }
124 public int UpdateGoodNP(Goods g) {
125 String sql = "update GOODS_TABLE g set g.gname=?,g.gdetails=?,g.gprice=?,g.gleixing=?,g.gpinpai=? where g.gid=?";
126 init(sql);
127 int a = -1;
128 try {
129 ps.setString(1, g.getGname());
130 ps.setString(2, g.getGdetails());
131 ps.setInt(3, g.getGprice());
132 ps.setInt(4, g.getGleixing());
133 ps.setString(5, g.getGpinpai());
134 ps.setInt(6, g.getGid());
135
136 a = ps.executeUpdate();
137 } catch (SQLException e) {
138 e.printStackTrace();
139 }
140 return a;
141 }
142
143 //获取数量
144 public int getGoodsSum(String scuser) {
145 String sql = "select s.scnum from SHOPPINGCAR s where s.scuser=?";
146 int sum=0;
147 init(sql);
148
149 try {
150 ps.setString(1, scuser);
151 rs = ps.executeQuery();
152
153 while (rs.next()) {
154 sum+=rs.getInt("scnum");
155 }
156 } catch (SQLException e) {
157 e.printStackTrace();
158 }
159 return sum;
160 }
161
162 public Goods getGoods(String gid) {
163 String sql = "select * from GOODS_TABLE g where g.gid="+gid;
164 init(sql);
165 Goods good=new Goods();
166 try {
167 rs = ps.executeQuery();
168 while (rs.next()) {
169 good=new Goods(rs.getInt(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getInt(5),rs.getInt(6),rs.getString(7));
170 }
171 } catch (SQLException e) {
172 e.printStackTrace();
173 }
174 return good;
175 }
176 /**
177 * 增加日志记录
178 * @param g
179 * @return
180 */
181 public int insertLog(Log l) {
182 String sql = "insert into ShopLog values(?,?,?,?,?)";
183
184 init(sql);
185 int a = -1;
186 try {
187 ps.setString(1, l.getPname());
188 ps.setString(2, l.getPugroup());
189 ps.setString(3, l.getPuptime());
190 ps.setString(4, l.getPip());
191 ps.setString(5, l.getPlog());
192 a = ps.executeUpdate();
193 } catch (SQLException e) {
194 e.printStackTrace();
195 }
196 return a;
197 }
198 /**
199 * 返回所有日志
200 * @return
201 */
202 public List<Log> getAllLogs(){
203 String sql = "select * from ShopLog s order by s.puptime desc";
204 init(sql);
205 List<Log> list = new ArrayList<Log>();
206
207 try {
208 rs = ps.executeQuery();
209 while (rs.next()) {
210 Log l=new Log();
211 l.setPname(rs.getString(1));
212 l.setPugroup(rs.getString(2));
213 l.setPuptime(rs.getString(3));
214 l.setPip(rs.getString(4));
215 l.setPlog(rs.getString(5));
216
217 list.add(l);
218 }
219 } catch (SQLException e) {
220 e.printStackTrace();
221 }
222 return list;
223 }
224 /**
225 * 返回购物车数据
226 * @return
227 */
228 public List<Order> getAllOrder(String username){
229 String sql = "select t.* from SHOPPINGCAR t where t.scuser=?";
230 init(sql);
231 List<Order> list = new ArrayList<Order>();
232
233 try {
234 ps.setString(1, username);
235 rs = ps.executeQuery();
236 while (rs.next()) {
237 Order l=new Order();
238
239 l.setScid(rs.getString(1));
240 l.setScuser(rs.getString(4));
241 l.setScgid(rs.getString(5));
242 l.setScnum(rs.getInt(3));
243 l.setSctime((new Date()).toLocaleString());
244
245 list.add(l);
246 }
247 } catch (SQLException e) {
248 e.printStackTrace();
249 }
250 return list;
251 }
252 /**
253 * 删除购物车已经提交的信息
254 */
255 public int deleteSCar(String username) {
256 String sql = "delete from SHOPPINGCAR g where g.scuser=? ";
257
258 init(sql);
259 int a = -1;
260 try {
261 ps.setString(1, username);
262 a = ps.executeUpdate();
263 } catch (SQLException e) {
264 e.printStackTrace();
265 }
266 return a;
267 }
268 /**
269 * 增加订单记录
270 * @param g
271 * @return
272 */
273 public int insertOrder(Order l) {
274 String sql = "insert into SHOPORDER values(?,?,?,?,?,?,?)";
275
276 init(sql);
277 int a = -1;
278 try {
279 ps.setString(1, l.getScid());
280 ps.setString(2, l.getScuser());
281 ps.setString(3, l.getScgid());
282 ps.setInt(4, l.getScnum());
283 ps.setInt(5, l.getScmoney());
284 ps.setString(6, l.getSctime());
285 ps.setString(7, l.getSczt());
286 a = ps.executeUpdate();
287 } catch (SQLException e) {
288 e.printStackTrace();
289 }
290 return a;
291 }
292 /**
293 * 返回未确认订单
294 * @return
295 */
296 public List<Order> getAllOrder(){
297 String sql = "select t.* from SHOPORDER t where t.sczt='待确认' order by t.sctime desc";
298 init(sql);
299 List<Order> list = new ArrayList<Order>();
300
301 try {
302 rs = ps.executeQuery();
303 while (rs.next()) {
304 Order l=new Order();
305 l.setScid(rs.getString(1));
306 l.setScuser(rs.getString(2));
307 l.setScgid(rs.getString(3));
308 l.setScnum(rs.getInt(4));
309 l.setScmoney(rs.getInt(5));
310 l.setSctime(rs.getString(6));
311 l.setSczt(rs.getString(7));
312 list.add(l);
313 }
314 } catch (SQLException e) {
315 e.printStackTrace();
316 }
317 return list;
318 }
319 /**
320 * 返回确认订单
321 * @return
322 */
323 public List<Order> getAllOrder1(){
324 String sql = "select t.* from SHOPORDER t where t.sczt='已确认' order by t.sctime desc";
325 init(sql);
326 List<Order> list = new ArrayList<Order>();
327
328 try {
329 rs = ps.executeQuery();
330 while (rs.next()) {
331 Order l=new Order();
332 l.setScid(rs.getString(1));
333 l.setScuser(rs.getString(2));
334 l.setScgid(rs.getString(3));
335 l.setScnum(rs.getInt(4));
336 l.setScmoney(rs.getInt(5));
337 l.setSctime(rs.getString(6));
338 l.setSczt(rs.getString(7));
339 list.add(l);
340 }
341 } catch (SQLException e) {
342 e.printStackTrace();
343 }
344 return list;
345 }
346 /**
347 * 修改订单状态
348 * @return
349 */
350 public void UpdateOrder(String sctime){
351 String sql = "update SHOPORDER s set s.sczt='已确认' where s.sctime=?";
352 init(sql);
353 try {
354 ps.setString(1, sctime);
355 ps.executeQuery();
356
357 } catch (SQLException e) {
358 e.printStackTrace();
359 }
360 }
361 /**
362 * 返回用户信息
363 * @return
364 */
365 public List<User> getAllUsers(){
366 String sql = "select t.*, t.rowid from USER_TABLE t order by t.utime desc";
367 init(sql);
368 List<User> list = new ArrayList<User>();
369
370 try {
371 rs = ps.executeQuery();
372 while (rs.next()) {
373 User l=new User();
374
375 l.setUserid(rs.getInt(1));
376 l.setUname(rs.getString(2));
377 l.setUpassword(rs.getString(3));
378 l.setUnickname(rs.getString(4));
379 l.setUemail(rs.getString(5));
380 l.setUtime(rs.getString(6));
381 list.add(l);
382 }
383 } catch (SQLException e) {
384 e.printStackTrace();
385 }
386 return list;
387 }
388
389 }
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SpringCloud2020 学习笔记(十)cloud-eureka-server7001 cloud-eureka-server7002 Eureka集群安装
- Python爬虫之抓取某东苹果手机评价
- python学习笔记
- 必看!!!python列表( 增 删 改 查),超详细讲解!!
- Python识别验证码
- 多线程爪巴虫下载进击的巨人
- 利用selenium实现自动翻页爬取某鱼数据
- 20行Python代码爬取下载应用宝所有APP软件
- 爬虫 -- 天天基金网数据简单爬取
- python爬虫-唯品会商品信息实战步骤详解
- go框架中使用CGO,docker build image打包镜像注意事项
- python爬虫汽车之家全车型及基本参数入数据库(截止50524个数据)(详解)
- C语言最全入门笔记
- 如何实现oVirt与Tungsten Fabric的集成
- 一文让你学完C++,干货收藏!!!