java mysql购物车_java购物车提交定单的数据库操作(mysql和oracle)

本文介绍了如何使用Java实现购物车提交订单的功能,涉及到对MySQL和Oracle数据库的操作。首先创建了`orders`和`orderitem`表,并展示了在MySQL中关闭自动提交、设置事务隔离级别,然后插入`orders`表并获取生成的订单ID,接着将订单详情插入`orderitem`表。最后,如果所有操作成功则提交事务,否则回滚。同时提供了在Oracle中使用序列的相关链接。
摘要由CSDN通过智能技术生成

java购物车提交定单的数据库操作(mysql和oracle),SET FOREIGN_KEY_CHECKS=0;

– —————————-

– Table structure for orders

– —————————-

CREATE TABLE `orders` (

`orderid` int(10) NOT NULL AUTO_INCREMENT COMMENT ‘bookid自增长’,

`userid` int(5) NOT NULL,

`orderdate` datetime NOT NULL,

`totalprice` float(10,0) NOT NULL,

PRIMARY KEY (`orderid`),

KEY `userid` (`userid`),

CONSTRAINT `userid` FOREIGN KEY (`userid`) REFERENCES `users` (`userid`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

SET FOREIGN_KEY_CHECKS=0;

– —————————-

– Table structure for orderitem

– —————————-

CREATE TABLE `orderitem` (

`id` int(10) NOT NULL AUTO_INCREMENT COMMENT ‘id自增长’,

`orderid` int(10) NOT NULL,

`bookid` int(5) NOT NULL,

`booknum` int(10) NOT NULL DEFAULT ’0′,

PRIMARY KEY (`id`),

KEY `orderid` (`orderid`),

KEY `bookid` (`bookid`),

CONSTRAINT `bookid` FOREIGN KEY (`bookid`) REFERENCES `books` (`bookid`),

CONSTRAINT `orderitem_ibfk_1` FOREIGN KEY (`orderid`) REFERENCES `orders` (`orderid`)

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

1.mysql提交订单到orders表和orderitem表

package com.ru.domain;

import java.io.Serializable;

import java.sql.*;

import java.util.ArrayList;

//这是对mysql数据库的操作

public class OrderService {

private Connection ct=null;

private PreparedStatement ps=null;

private ResultSet rs=null;

public void submitorder(MyCart mycart,Users user){

try {

//1.将数据插入order表

String sql=”insert into orders(userid,orderdate,totalprice) values(‘”+user.getUserid()+”‘,’2012-07-26′,’”+mycart.totalprice()+”‘)”;

// 加载驱动

Class.forName(“com.mysql.jdbc.Driver”);

// 连接数据库

ct = DriverManager.getConnection(“jdbc:mysql://localhost:3306/ru”,”root”, “123456″);

//**********************关闭mysql的自动提交****************

ct.setAutoCommit(false);

//************************设置事物的隔断级别***************

ct.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);

// 创建表达式

ps= ct.prepareStatement(sql);

ps.executeUpdate();

//2.获取当前的orderid

String bookid = null;

rs = ps.getGeneratedKeys();

if(rs.next()) {

bookid = rs.getString(1);

}

//3.将数据插入orderitem中

ArrayListal=mycart.showcart();

for(Books book:al){

sql=”insert into orderitem(orderid,bookid,booknum) values(‘”+bookid+”‘,’”+book.getBookid()+”‘,’”+book.getBookcount()+”‘)”;

ps=ct.prepareStatement(sql);

ps.executeUpdate(sql);

}

//4.提交操作

ct.commit();

} catch (Exception e) {

//加入操作失败的话回滚

try {

ct.rollback();

} catch (SQLException e1) {

e1.printStackTrace();

}

e.printStackTrace();

} finally{

if (rs != null) {

try {

rs.close();

} catch (Exception e) {

// TODO: handle exception

}

} else if (ps != null) {

try {

ps.close();

} catch (Exception e) {

// TODO: handle exception

}

} else if (ct != null) {

try {

ct.close();

} catch (Exception e) {

// TODO: handle exception

}

}

}

}

}

2.oracle提交定单

其中使用到的两个序列

http://blog.sina.com.cn/s/blog_976e4957010131nk.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值