java里面对于数据库更新的操作注意事项

该博客介绍了如何使用Java进行数据库更新操作,特别是在更新时仅允许一个关键键(如'id'或'name')且可以有多个修改键的情况下。示例代码展示了如何构建SQL语句,通过迭代Map对象来设置`WHERE`子句和`SET`子句,确保数据的正确更新。此代码适用于理解Java与MySQL交互的基本原理。

如果要进行数据的更新操作只允许一个关键键,可以有多个修改键

String sql="update "+mysql_information.get_mysql_table()+" set "+new_map+" where "+old_map;
//old_map里面只能有一个键值对,这个键值对是对数据的关键键
//new_mpa里面是修改的数据键值对,每个数据要用逗号隔开
//不管是old_map还是new_map参数的格式为:key='value'

完整代码如下:


import mysql.mysql_information;

import javax.naming.spi.DirectoryManager;
import javax.servlet.annotation.WebServlet;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Modification {

    public void Modification_sql(Map<String, String> old_date, Map<String, String> new_date) {
        try {
            Class.forName("com.mysql.jdbc.Driver");

            mysql_information mysql_information = new mysql_information();

            Connection conn = DriverManager.getConnection(mysql_information.get_mysql_dir(), mysql_information.get_username(), mysql_information.get_password());

            Statement st = conn.createStatement();

            Iterator<String> it = old_date.keySet().iterator();

            StringBuilder old_map= new StringBuilder();
            String key ;
            String value ;

            while (it.hasNext()) {

                key = it.next();
                value = old_date.get(key);

                if(key.equals("name")||key.equals("id")){
                    old_map.append(key).append("='").append(value).append("'");
                    break;
                }


            }

            it = new_date.keySet().iterator();
            StringBuilder new_map = new StringBuilder();

            while (it.hasNext()) {
                key = it.next();
                value = new_date.get(key);
                if(!it.hasNext()){
                    new_map.append(key).append("='").append(value).append("'");
                }else{
                    new_map.append(key).append("='").append(value).append("',");
                }
            }

            String sql = "update " + mysql_information.get_mysql_table() + " set " + new_map + " where " + old_map;
            System.out.println(sql);
            try {
                st.executeUpdate(sql);
            } catch (Exception e) {
                System.out.println("数据更新失败");
            }

            conn.close();
            st.close();


        } catch (ClassNotFoundException | SQLException ex) {
            System.out.println("数据库连接失败");
        }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

堕落年代

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值