看似简单,实际上还是有点复杂的面试题

算是面试总结吧,对于我这种小白来说,当时是没有思路的,但是今天面试的时候就这个题让我头疼。

大概题目:

有两个表,表1为详细表,分别有三个字段,detailid,datailtype,remark。表2为产品表,有两个字段分别是productid,productname。

要求:

把表1中的detailtype字段所有信息变成对应的表2中的productname字段(语言不限)。

表1
detailiddetailtyperemark
101产品详细1备注1
102产品详细2备注2
103产品详细3备注3
104产品详细4备注4
19999产品详细19999备注19999

 

表2
productidproductname
101产品1
102产品2
103产品3
104产品4
19999产品19999

 

题目已经描述完,我以为就是一个Update就能完事,没想到想了半天没有想出来,结果面试机会都没有给,我是真的想说当时真的没有思路,蒙圈的一B,于是这场面试就此告终啦,有点遗憾!回家后一直琢磨这道题,想来想去,是用子查询还是什么,但是以前没有写过同时修改N个数据的SQL语句啊,于是自己在电脑上敲,最后结合Java语言终于实现了修改多项数据的这道题,算是长见识啦,深深的给出题的人鞠个躬。记录于此,以作警钟。

重要的事情我想说三句:老板,这就是你要的代码,老板,这就是你要的代码,老板,你就是你要的代码。

import java.sql.*;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class TsetMain {

    public static void main(String args[]) throws SQLException {
        HashMap hs = TsetMain.getProduct();
        Connection con = DBUtil.ConnectDB();
        int result=0;
        Iterator it = hs.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry<String, String> entry = (Map.Entry<String, String>) it.next();
            String sql = "update detail set typename=? where detailid=?";
            PreparedStatement ps = con.prepareStatement(sql);
            ps.setString(1, entry.getValue());
            ps.setString(2, entry.getKey());
            result = ps.executeUpdate();
        }
        if (result > 0) {
            System.out.println("修改成功");
        } else {
            System.out.println("修改失败");
        }
    }

    public static HashMap<String, String> getProduct() throws SQLException {
        HashMap<String, String> hm = new HashMap();
        Connection conn = DBUtil.ConnectDB();

        String sql = "select productid,productname from product";
        PreparedStatement preparedStatement = conn.prepareStatement(sql);
        ResultSet resultSet = preparedStatement.executeQuery();
        if (resultSet != null) {
            while (resultSet.next()) {
                String productid = resultSet.getString("productid");
                String productname = resultSet.getString("productname");
                hm.put(productid, productname);
            }
        }
        DBUtil.releaseDB(preparedStatement, resultSet);
        return hm;
    }
}

以上代码能实现题目要求的功能,这只是我自己的理解,仅代表自己观点,如果有其他意见的朋友,可以给我发一个更简单的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值