经典电商数据库分析构建(二)
2016-03-17 13:26
441 查看
传统电商表的分析以及设计(java代码处理上文中的七个任务)2
工具类 JDBCUtils.java/** * @author 高远</n> 博客 http://blog.csdn.net/wgyscsf</n> 编写时期 2016-3-17 上午10:04:02 */ public class JDBCUtils { private static String url = "jdbc:mysql://localhost:3306/mygist"; private static String user = "root"; private static String password = "wanggaoyuan"; private static Connection conn; static { } /* * 装载驱动 */ public static void loadDriver() { try { Class.forName("com.mysql.jdbc.Driver");// 高版本不需要该语句 } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /* * 获取连接 */ public static Connection getConnection() { loadDriver(); try { conn = DriverManager.getConnection(url, user, password); return conn; } catch (SQLException e) { e.printStackTrace(); } return null; } /* * 释放连接 */ public static void releaseConn(Statement stmt, Connection conn) { if (stmt != null) { try { stmt.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } stmt = null; } if (conn != null) { try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } conn = null; } } /* * 释放连接 */ public static void releaseConn(ResultSet rs, Statement stmt, Connection conn) { if (rs != null) { try { rs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } rs = null; } releaseConn(stmt, conn); } }
对上述文章的七个数据库操作语句的java实现 ShowMyGist.java
/** * @author 高远</n> 博客 http://blog.csdn.net/wgyscsf</n> 编写时期 2016-3-17 上午10:58:11 */ public class ShowMyGist { /* * 1. 从商品表中查询以“老板”两个字开头的商品名称及数量,并按数量降序排序(用户搜索) */ @Test public void Test1() throws SQLException { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; String sql = "SELECT pname 商品名,premain 剩余量 FROM product WHERE pname LIKE '老板%' ORDER BY premain"; conn = JDBCUtils.getConnection(); ps = conn.prepareStatement(sql); rs = ps.executeQuery(); while (rs.next()) { System.out.println(rs.getString(1) + ":" + rs.getInt(2)); } JDBCUtils.releaseConn(rs, ps, conn); } /* * 2. 查询所有的商品名、价格、所属厂家、产地)(商品信息展示) */ @Test public void Test2() throws SQLException { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; String sql = "SELECT pname 商品名,premain 剩余量,pprice 价格,mname 所属厂家,maddress 产地 FROM product,merchant WHERE product.mid = merchant.mid "; conn = JDBCUtils.getConnection(); ps = conn.prepareStatement(sql); rs = ps.executeQuery(); while (rs.next()) { System.out .println(rs.getString(1) + ":" + rs.getInt(2) + ":" + rs.getDouble(3) + rs.getString(4) + ":" + rs.getString(5)); } JDBCUtils.releaseConn(rs, ps, conn); } /* * 3. 从订单表中查询购买订单编号为“2”的所有商品的商品名字、单价、数量、顾客名字及订单日期(用户查看订单) */ @Test public void Test3() throws SQLException { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; String sql = "SELECT pname 商品名,premain 剩余量,pprice 价格,cname 顾客名," + "odatetime 订单日期 FROM product,customer,orders,ordersitem WHERE" + " ordersitem.pid = product.pid AND ordersitem.oid = orders.oid " + "AND orders.cid = customer.cid AND orders.oid = ? "; System.out.println("请输入您要查询的订单号:"); Scanner sc = new Scanner(System.in); int next = sc.nextInt(); conn = JDBCUtils.getConnection(); ps = conn.prepareStatement(sql); ps.setInt(1, next); rs = ps.executeQuery(); if (!rs.next()) { System.out.println("查询不到该订单!"); return; } while (rs.next()) { System.out .println(rs.getString(1) + ":" + rs.getInt(2) + ":" + rs.getDouble(3) + rs.getString(4) + ":" + rs.getString(5)); } JDBCUtils.releaseConn(rs, ps, conn); } /* * 4. * 更新订单1:更新状态为“已支付”,总价格为实际价格。显示:订单编号为“1”的所有商品的商品名字、单价、数量、顾客名字及订单日期,总价格,订单状态 * (用户支付查看订单) */ @Test public void Test4() throws SQLException { Connection conn = null; PreparedStatement ps = null; String sql = "UPDATE orders SET orders.ostate = '已支付'," + "orders.osummoney =" + "(SELECT (SELECT SUM( " + " ordersitem.iobuynum * ordersitem.iosummoney )" + " FROM ordersitem WHERE ordersitem.oid = orders.oid " + " AND ordersitem.oid = ? GROUP BY ordersitem.oid)) " + "WHERE orders.oid =?"; System.out.println("请输入您要更新的订单号:"); Scanner sc = new Scanner(System.in); int next = sc.nextInt(); conn = JDBCUtils.getConnection(); ps = conn.prepareStatement(sql); ps.setInt(1, next); ps.setInt(2, next); ps.executeUpdate(); JDBCUtils.releaseConn(ps, conn); } /* * 5. 删除订单3信息(用户取消订单) */ @Test public void Test5() throws SQLException { Connection conn = null; PreparedStatement ps = null; System.out.println("请输入您要删除的订单号:"); Scanner sc = new Scanner(System.in); int next = sc.nextInt(); String sql1 = "DELETE FROM ordersitem WHERE oid=?"; String sql2 = "DELETE FROM orders WHERE oid=?"; conn = JDBCUtils.getConnection(); conn.setAutoCommit(false);// 开启事务:保证两个删除同时完成 ps = conn.prepareStatement(sql1); ps.setInt(1, next); ps.executeUpdate(); ps = conn.prepareStatement(sql2); ps.setInt(1, next); ps.executeUpdate(); conn.commit();// 提交事务 JDBCUtils.releaseConn(ps, conn); Test3(); } /* * 6. 查询编号为2的商品的售出数量、名字、购买人名字(商家查看某件商品出售情况) */ @Test public void Test6() throws SQLException { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; String sql = "SELECT SUM(ordersitem.iobuynum) 售出数量," + "SUM(ordersitem.iobuynum*product.pprice) 总价," + "product.pname 商品名称,customer.cname 顾客名字 " + " FROM product,customer, orders, ordersitem " + "WHERE ordersitem.pid = product.pid AND" + " ordersitem.oid = orders.oid AND " + "orders.cid = customer.cid AND " + "product.pid = ? GROUP BY customer.cid"; System.out.println("请输入您要查询的商品的编号:"); Scanner sc = new Scanner(System.in); int next = sc.nextInt(); conn = JDBCUtils.getConnection(); ps = conn.prepareStatement(sql); ps.setInt(1, next); rs = ps.executeQuery(); while (rs.next()) { System.out.println("售出数量:" + rs.getInt(1) + "----" + "总销价:" + rs.getDouble(2) + "----商品名字:" + rs.getString(3) + "-----顾客名字:" + rs.getString(4)); } JDBCUtils.releaseConn(rs, ps, conn); } /* * 7. 查看宝洁公司的销售情况,按照销售数量由高到低排序(商家查看售出数据) */ @Test public void Test7() throws SQLException { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; String sql = "SELECT SUM(ordersitem.iobuynum) 售出数量," + "SUM( ordersitem.iobuynum * product.pprice) 总价" + ", product.pname 商品名字 FROM " + "product, ordersitem, merchant " + "WHERE ordersitem.pid = product.pid " + " AND product.mid = merchant.mid " + " AND merchant.mname = '广州宝洁' " + "GROUP BY product.pname "; conn = JDBCUtils.getConnection(); ps = conn.prepareStatement(sql); rs = ps.executeQuery(); while (rs.next()) { System.out.println("售出数量:" + rs.getInt(1) + "----" + "总销价:" + rs.getDouble(2) + "----商品名字:" + rs.getString(3)); } JDBCUtils.releaseConn(rs, ps, conn); } /* * 8. 将售出的商品按照售出数量由高到低排序(管理员查看售出数据) */ @Test public void Test8() throws SQLException { Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; String sql = "SELECT SUM(ordersitem.iobuynum) 售出数量," + "SUM( ordersitem.iobuynum * product.pprice) 总价" + ", product.pname 商品名字 FROM " + "product, ordersitem, merchant " + "WHERE ordersitem.pid = product.pid " + " AND product.mid = merchant.mid " + " GROUP BY product.pname ORDER BY ordersitem.iobuynum DESC "; conn = JDBCUtils.getConnection(); ps = conn.prepareStatement(sql); rs = ps.executeQuery(); while (rs.next()) { System.out.println("售出数量:" + rs.getInt(1) + "----" + "总销价:" + rs.getDouble(2) + "----商品名字:" + rs.getString(3)); } JDBCUtils.releaseConn(rs, ps, conn); } }
相关文章推荐
- 数据库中存储日期的字段类型究竟应该用varchar还是datetime ?
- mysql创建存储过程中的问题
- SQL学习笔记
- linux下安装redis集群(Master-Slave)
- 批量添加数据
- mysql导出excel文件的几种方法
- oracle下新建用户
- 无法打开SQL Server的连接
- SQL中distinct的用法和left join查询的含义
- SQL UNION 和 UNION ALL 操作符
- MS SQL SERVER 不常用命令合集
- sql server中的 SET NOCOUNT ON 的含义
- oracle树形查询语句
- CentOS 7 安装 redis3.0.7 详细步骤
- 电力管理信息系统数据库表总结
- mysql之视图
- Redis基础知识
- SQL Server 判断除数是否为0
- SQL having 子句
- 30多条mysql数据库优化方法,千万级数据库记录查询轻松解决