java连接数据库后进行更新插入操作

接上一次的查询操作,这次将更新与插入的代码补充

首先是服务端的接收端,接收到客户端的请求则发送相应操作

					if ("1".equals(message)) {
						//从mysql数据库仓库中查询数据
						jc.mysqlSelect("select * from cangku");
						
//						//从oracle数据库订单表中查询数据
//						jc.oracleSelect("select * from freshbin_dingdan");
						
						//当oracle数据中连接不上时候,就从本地的mysql数据库的订单表获取数据
						jc.mysqlSelectDingDan("select * from dingdan");
						
						//获取订单表与仓库表比较后,数量不同的结果
						jc.writeIO();
						
						//将两张表比较后的结果返回给客户端
						os.write(jc.writeIO().toString().getBytes());
						os.flush();
					}
					
					//这是更新操作的功能代码
					if("2".equals(message)) {
						UpdateMySqlCangKuNumber umsck = new UpdateMySqlCangKuNumber();
						//将需要更新以及插入的数据发送给客户端
						StringBuffer sb = umsck.getUpdateInsertNumber();
						os.write(sb.toString().getBytes());
					}
					os.write(("请输入1或2(1为查询,2为更新):\n").getBytes());
				}


然后是获取需要更新与插入的id与数量

// 执行查询仓库与订单的语句,获取需要更细与插入的商品编号与数量
	public void getNewNumber() {
		// 从mysql数据库仓库中查询数据并储存起来
		mysqlMap = jc.mysqlSelect("select * from cangku");

		// 从mysql数据库订单表中获取数据并存储起来
		mysqlDingDanMap = jc.mysqlSelectDingDan("select * from dingdan");

		// 获取仓库表的所有数据
		Set<Integer> mysqlSet = mysqlMap.keySet();

		// 获取订单表的数据
		Set<Integer> mysqlDingDanSet = mysqlDingDanMap.keySet();

		for (Integer mn : mysqlSet) {
			// 定义一个boolean类型的变量来表示当仓库的商品编号在订单表中不存在时,就设置为true
			boolean flag = true;

			for (Integer on : mysqlDingDanSet) {
				if (mn.intValue() == on.intValue()) {
					if (mysqlMap.get(mn).intValue() != mysqlDingDanMap.get(mn)
							.intValue()) {
						updateNewNumber.put(mn, mysqlMap.get(mn));
					}
					flag = false;
				}
			}
			// 当flag为true时,就把订单表中没有的商品编号存起来
			if (flag) {
				insertNewNumber.put(mn, mysqlMap.get(mn));
			}
		}
	}


接着是执行更新操作和插入操作,以及把结果以字符串的形式发送给客户端

// 进行更新操作
	public void updateNumber() {
		// 执行查询仓库与订单的语句,获取需要更细与插入的商品编号与数量
		getNewNumber();
		// 获取所有需要更新的商品编号
		Set<Integer> mysqlDingDanNumber = updateNewNumber.keySet();
		for (Integer i : mysqlDingDanNumber) {
			// 将需要更新的商品编号和数量更新到订单表中
			jc.getMsPool().getUPstmt(
					"update dingdan set dingdannumber=? WHERE id=?", i,
					updateNewNumber.get(i));
		}
	}

	// 进行插入操作
	public void insertNumber() {
		// 获取所有需要插入的商品编号
		Set<Integer> mysqlDingDanNumber = insertNewNumber.keySet();
		for (Integer i : mysqlDingDanNumber) {
			// 将需要插入的商品编号和数量插入到订单表中
			jc.getMsPool().getUPstmt(
					"insert into dingdan(dingdannumber,id) values(?,?)", i,
					insertNewNumber.get(i));
		}
	}

	// 遍历需要更新的数据,以字符串形式存储,以便将来发送给客户端
	public StringBuffer getUpdateInsertNumber() {
		// 进行更新操作
		updateNumber();
		// 进行插入操作
		insertNumber();
		// 获取所有需要更新的商品编号
		Set<Integer> mysqlDingDanNumber = updateNewNumber.keySet();

		for (Integer i : mysqlDingDanNumber) {
			SBUpdateNumber.append("更新了商品编号为:" + i + "的商品-----此次更新的数量为:"
					+ updateNewNumber.get(i) + "\r\n");
		}
		
		// 获取所有需要插入的商品编号
		Set<Integer> mysqlDingDanInsertNumber = insertNewNumber.keySet();

		for (Integer i : mysqlDingDanInsertNumber) {
			SBUpdateNumber.append("插入了新的商品编号为:" + i + "的商品-----此次插入的数量为:"
					+ insertNewNumber.get(i) + "\r\n");
		}
		
		return SBUpdateNumber;
	}

最后,当然是上图了



下面这张图是我仅仅实现了更新功能时候的测试


然后是执行更新与插入的图




这个小小的程序经过改了又改,虽然有点浪费时间,但是实现效果后,自己感觉还是挺开心的.....虽然已经很晚了,但是顿时感觉很清醒..........好,可以去睡觉了...........加油!,.......................

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值