如何更新id列选择的行?

时间:2017-01-06 16:07:42

标签: java database crud

此表格带有管理员可以更新的文本字段

var AWS = require("aws-sdk");
var https = require('https');
var http = require('http');
var fs = require('fs');

// Incoming Handler
// <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
    exports.handler = (event, context, callback) => {
        GetAPOD();
    };
// <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>

// Functions
// <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
    function GetAPOD() {
        var nasa_api_key = 'MY KEY GOES HERE'
        ,   nasa_api_path = '/planetary/apod?api_key=' + nasa_api_key;

        var options = {
            host: 'api.nasa.gov',
            port: 443,
            path: nasa_api_path,
            method: 'GET'
        };

        // Connect to the NASA API and get the APOD.
        var req = https.request(options, function (res) {
            console.log('Open connection to NASA.');
            res.setEncoding('utf-8');

            var responseString = '';
            res.on('data', function (data) {
                responseString = data;
            });

            res.on('end', function () {
                console.log('API Response: ' + responseString);

                var responseObject = JSON.parse(responseString)
                ,   image_date = responseObject['date']
                ,   image_url = responseObject['url']
                ,   image_hdurl = responseObject['hdurl']
                ,   media_type = responseObject['media_type'];

                if (media_type == 'image') {
                    var image_name = image_date + '.jpg';

                    var s3 = new AWS.S3();
                    var s3Bucket = new AWS.S3( { params: {Bucket: 'nasa-apod'} } );

                    // Check to see if the image already exists in the S3 bucket.
                    // If not we will upload the image to S3.
                    var head_data = {Key: image_name};
                    s3Bucket.headObject(head_data, function(err, output_head_data) {
                        if (output_head_data) {
                            console.log("Image exists on S3.");
                        }
                        else {
                            console.log("Image does not exists on S3.");
                            // Image has not been uploaded to S3, open a stream and download the image to the /tmp folder.

                            var file = fs.createWriteStream("/tmp/" + image_name);
                            var request = http.get(image_url, function(response) {
                                console.log("Opening file stream.");

                                // Pipe the data into the file stream and save to disk.
                                response.pipe(file);

                                response.on('end', function () {
                                    // File is written to disk, we are going to check that it exists. 
                                    var fileName = "/tmp/" + image_name;
                                    fs.exists(fileName, function(exists) {
                                        if (exists) {
                                            console.log("File exits in /tmp folder.");

                                            // Get the stats for the image, will need this for the ContentLength
                                            fs.stat(fileName, function(error, stats) {
                                                if (error) {
                                                    console.log("Stat Error: " + error);
                                                }
                                                else {
                                                    console.log("Opening file stream.");
                                                    var image_stream = fs.createReadStream(fileName);

                                                    // Begin the upload process to S3.
                                                    var param_data = {Key: image_name, Body: image_stream, ContentType: "image/jpeg", ContentLength: stats.size, ACL: "public-read"};
                                                    s3Bucket.putObject(param_data, function(err, output_data) {
                                                        if (err) {
                                                            console.log('Error uploading data to S3: ' + err); 
                                                        }
                                                        else {
                                                            console.log('Image successfully uploaded.');
                                                        }
                                                    });
                                                }
                                            });
                                        }
                                        else {
                                            console.log('File does not exist in the /tmp folder.');
                                        }
                                    });
                                });
                            });
                        }
                    });
                }
                else {
                    console.log("Media Type: " + media_type);
                }
            });
        });

        req.on('error', function (e) {
            console.error('HTTP error: ' + e.message);
        });

        req.end();
    }
// <><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>

这是显示JTable的类。

    //For Update
public AdminCreateQnsPanel(JFrame mf, QuizDetails q, int set, String topic) {
    super(mf);

    System.out.println("**** admin create qns panel *"+ q.getQuestionNo());
    System.out.println("**** admin create qns panel *"+ q.getQuestionDesc());
    System.out.println("**** admin create qns panel *"+ q.getOption1());
    System.out.println("**** admin create qns panel *"+ q.getOption2());    

    JLabel lblSet = new JLabel("Set 1");
    lblSet.setFont(new Font("Tahoma", Font.BOLD, 30));
    lblSet.setBounds(29, 160, 141, 28) ;
    add(lblSet);

    JLabel lblQnsDesc = new JLabel("Question Description :");
    lblQnsDesc.setFont(new Font("Tahoma", Font.BOLD, 16));
    lblQnsDesc.setBounds(76, 270, 181, 20);
    add(lblQnsDesc);

    txtfQnsDesc = new JTextField();
    txtfQnsDesc.setColumns(10);
    txtfQnsDesc.setBounds(76, 306, 639, 26);
    add(txtfQnsDesc);
    txtfQnsDesc.setText(q.getQuestionDesc());

    JLabel lblOp1 = new JLabel("Option 1 :");
    lblOp1.setFont(new Font("Tahoma", Font.BOLD, 16));
    lblOp1.setBounds(76, 365, 103, 20);
    add(lblOp1);

    txtfOp1 = new JTextField();
    txtfOp1.setColumns(10);
    txtfOp1.setBounds(218, 362, 146, 26);
    add(txtfOp1);
    txtfOp1.setText(q.getOption1());

    JLabel lblOp2 = new JLabel("Option 2 :");
    lblOp2.setFont(new Font("Tahoma", Font.BOLD, 16));
    lblOp2.setBounds(76, 418, 103, 20);
    add(lblOp2);

    txtfOp2 = new JTextField();
    txtfOp2.setColumns(10);
    txtfOp2.setBounds(218, 415, 146, 26);
    add(txtfOp2);
    txtfOp2.setText(q.getOption2());

    JLabel lblOp3 = new JLabel("Option 3 :");
    lblOp3.setFont(new Font("Tahoma", Font.BOLD, 16));
    lblOp3.setBounds(76, 468, 103, 20);
    add(lblOp3);

    txtfOp3 = new JTextField();
    txtfOp3.setColumns(10);
    txtfOp3.setBounds(218, 465, 146, 26);
    add(txtfOp3);
    txtfOp3.setText(q.getOption3());

    JLabel lblOp4 = new JLabel("Option 4 :");
    lblOp4.setFont(new Font("Tahoma", Font.BOLD, 16));
    lblOp4.setBounds(76, 515, 103, 20);
    add(lblOp4);

    txtfOp4 = new JTextField();
    txtfOp4.setColumns(10);
    txtfOp4.setBounds(218, 512, 146, 26);
    add(txtfOp4);
    txtfOp4.setText(q.getOption4());

    JLabel lblCorrAns = new JLabel("Correct Answer :");
    lblCorrAns.setFont(new Font("Tahoma", Font.BOLD, 16));
    lblCorrAns.setBounds(76, 581, 151, 20);
    add(lblCorrAns);

    txtfCorrAns = new JTextField();
    txtfCorrAns.setColumns(10);
    txtfCorrAns.setBounds(218, 578, 146, 26);
    add(txtfCorrAns);
    txtfCorrAns.setText(q.getCorrectAnswer());

    JButton button = new JButton("Add");
    button.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            actionPerformedAdd();
            //actionPerformedOk();

        }
    });

    button.setFont(new Font("Tahoma", Font.BOLD, 16));
    button.setBounds(428, 622, 115, 29);
    add(button);

    JButton btnCancel = new JButton("Cancel");
    btnCancel.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            JPanel contentPane = new AdminQuizOverallPanel(myFrame, set, topic);
            myFrame.setContentPane(contentPane);
            myFrame.setVisible(true);
        }
    });
    btnCancel.setFont(new Font("Tahoma", Font.BOLD, 16));
    btnCancel.setBounds(712, 622, 115, 29);
    add(btnCancel);

    JLabel lblQnsNo = new JLabel("Question No. : ");
    lblQnsNo.setFont(new Font("Tahoma", Font.BOLD, 16));
    lblQnsNo.setBounds(76, 234, 151, 20);
    add(lblQnsNo);

    txtfQnsNo = new JTextField();
    txtfQnsNo.setBounds(218, 228, 146, 26);
    add(txtfQnsNo);
    txtfQnsNo.setColumns(10);
    txtfQnsNo.setText(new Integer(q.getQuestionNo()).toString());


    JButton btnUpdate = new JButton("Update");
    btnUpdate.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            actionPerformedUpdate();


    } });
    btnUpdate.setFont(new Font("Tahoma", Font.BOLD, 16));
    btnUpdate.setBounds(572, 622, 115, 29);
    add(btnUpdate);

}




//Create 
private void actionPerformedAdd() {
    // retrieve the user input from the text box/area provided
    if (validateInput()) {
        //amtSpend = Double.parseDouble(txtAmount.getText());
        // create an object of expenses based on the input values
        //Debugging? -> System.out.println(topic);

        //***Refer to QuizDetails Entity Class for its constructor
        QuizDetails e1 = new QuizDetails(Integer.parseInt(txtfQnsNo.getText()), txtfQnsDesc.getText(), txtfOp1.getText(),
        txtfOp2.getText(), txtfOp3.getText(), txtfOp4.getText(), txtfCorrAns.getText(), topic, set);
        // insert to database and check return value
        if (QuizDetailsDA.createQuizDetails(e1)) { //Call Create method from QuizDetailsDA 
            System.out.print("Ok");
            JOptionPane.showMessageDialog(myFrame,
                    "Record created successfully", "Alert",
                    JOptionPane.INFORMATION_MESSAGE);
            // reset text field for next record.
            txtfQnsNo.setText("");
            txtfQnsDesc.setText("");
            txtfOp1.setText("");
            txtfOp2.setText(""); 
            txtfOp3.setText("");
            txtfOp4.setText("");
            txtfCorrAns.setText("");
            JPanel contentPane = new AdminQuizOverallPanel(myFrame, set,topic);
            myFrame.setContentPane(contentPane);
            myFrame.setVisible(true);
        } else
        {
            System.out.print("Error");
            JOptionPane.showMessageDialog(myFrame,
                    "Database Error. Record not created.", "Alert",
                    JOptionPane.ERROR_MESSAGE); 
        }


    }
}

private boolean validateInput() {
    boolean result = false;
    String msg = "";
    result = true;
    /*int msgType = JOptionPane.ERROR_MESSAGE;

    // retrieve the user input from the text box/area provided
    String dateSpend = txtDate.getText();
    String cat = txtCategory.getText();
    String amt = txtAmount.getText();
    String cont = txtContent.getText();

    if (dateSpend.length() != 10)
        msg += "Please enter date in DD-MM-YYYY format.\n";
    if (cat.length() == 0)
        msg += "Please enter category.\n";
    try {
        Double.parseDouble(amt); // convert to double for amount
    } catch (NumberFormatException e) {
        msg += "Plese enter amount in decimal numbers.\n";
    }
    if (cont.length() == 0)
        msg += "Please enter content.\n";

    if (msg.length() == 0)
        result = true;
    else
        JOptionPane.showMessageDialog(myFrame, msg, "Alert", msgType);
        */
    return result;
}


//Update
public AdminCreateQnsPanel(JFrame mf,String action, QuizDetails e1){
    this(mf, action);
    txtfQnsNo.setText(new Integer(e1.getQuestionNo()).toString());
    txtfQnsDesc.setText(e1.getQuestionDesc());
    txtfOp1.setText(e1.getOption1());
    txtfOp2.setText(e1.getOption2());
    txtfOp3.setText(e1.getOption3());
    txtfOp4.setText(e1.getOption4());
    txtfCorrAns.setText(e1.getCorrectAnswer());
    quizdetails = e1;
}




public AdminCreateQnsPanel(JFrame mf, String action) {
    super(mf);
}



public void actionPerformedUpdate(){
    int qnsNo = Integer.parseInt(txtfQnsNo.getText());
    String qnsDesc = txtfQnsDesc.getText();
    String op1 = txtfOp1.getText();
    String op2 = txtfOp2.getText();
    String op3 = txtfOp3.getText();
    String op4 = txtfOp4.getText();
    String corrAns = txtfCorrAns.getText();

    //***Refer to QuizDetails Entity Class for its constructor 
    QuizDetails e1 = new QuizDetails(id1,qnsNo, qnsDesc, op1, op2, op3, op4, corrAns); 

    //Testing -> System.out.println("action performed update " + e1.getQuestionNo());

    if(QuizDetailsDA.updateQuizDetails(e1)){ //Call Update method from QuizDetailsDA 
        JOptionPane.showMessageDialog(myFrame,  "Record updated successfully", "Alert", JOptionPane.INFORMATION_MESSAGE);
        txtfQnsNo.setEditable(false);
        txtfQnsDesc.setEditable(false);
        txtfOp1.setEditable(false);
        txtfOp2.setEditable(false);
        txtfOp3.setEditable(false);
        txtfOp4.setEditable(false);
        txtfCorrAns.setEditable(false);


    }
    else{
        JOptionPane.showMessageDialog(myFrame,  "Database Error. Record not updated.", "Alert", JOptionPane.ERROR_MESSAGE);
    }
}

数据访问包

package studyHelperApp.ui;


import javax.swing.JLabel;



import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import model.QuizDetailsTableModel;
import studyHelperApp.dataAccess.QuizDetailsDA;
import studyHelperApp.entity.QuizDetails;
import javax.swing.JButton;
import javax.swing.JFrame;
import studyHelpersApp.ui.MasterPanel;
import java.awt.Font;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.awt.event.ActionEvent;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.ListSelectionModel;
import java.awt.Color;




public class AdminQuizOverallPanel extends MasterPanel {
   private JTextField txtfSearch;
   private JTable table;
   private int set;
   private String topic;
   public static int id1;
   private int id;

   private void setTableModelFromDB(){
       ArrayList <QuizDetails> result = QuizDetailsDA.retrieveAllQuizDetails(set,topic); //Call method from QuizDetailsDA
       QuizDetailsTableModel model = new QuizDetailsTableModel(result);
       table.setModel(model);
   }

   public void loadDataTable(){
          setTableModelFromDB();

        } 

    /**
     * Create the panel.
     * @wbp.parser.constructor
     */

   public AdminQuizOverallPanel(JFrame mf) {
        super(mf);
        initComponents();

        setBounds(100, 100, 900, 750);
        setLayout(null);

        JLabel lblDisplay = new JLabel("");
        lblDisplay.setFont(new Font("Tahoma", Font.PLAIN, 17));
        lblDisplay.setBounds(550, 200, 287, 20);
        add(lblDisplay);

        JLabel lblSet = new JLabel("Set ");
        lblSet.setBounds(49, 189, 58, 31);
        lblSet.setFont(new Font("Tahoma", Font.BOLD, 30));
        add(lblSet);


        JScrollPane scrollPane = new JScrollPane();
        scrollPane.setBounds(15, 246, 847, 225);
        add(scrollPane);

        table = new JTable();
        loadDataTable();
        scrollPane.setViewportView(table);


        JButton btnDelete = new JButton("Delete");
        btnDelete.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                actionPerformedDelete();



        }
         });

        btnDelete.setFont(new Font("Tahoma", Font.BOLD, 16));
        btnDelete.setBounds(637, 502, 115, 29);
        add(btnDelete);


        JButton btnSearch = new JButton("Search");
        btnSearch.setFont(new Font("Tahoma", Font.BOLD, 16));
        btnSearch.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0){
                lblDisplay.setText("You searched for: "+txtfSearch.getText());


            }


        });

        btnSearch.setBounds(744, 160, 93, 29);
        add(btnSearch);

        txtfSearch = new JTextField();
        txtfSearch.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                if(e.getKeyCode()== KeyEvent.VK_ENTER)
                lblDisplay.setText("You searched for: "+txtfSearch.getText());
            }
        });
        txtfSearch.setBounds(550, 161, 194, 26);
        add(txtfSearch);
        txtfSearch.setColumns(10);

        JButton btnUpdate = new JButton("Update");
        btnUpdate.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                actionPerformedUpdate();
            }
        });
        btnUpdate.setFont(new Font("Tahoma", Font.BOLD, 16));
        btnUpdate.setBounds(372, 502, 115, 29);
        add(btnUpdate);

        JButton btnAdd = new JButton("Add");
        btnAdd.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                JPanel contentPane = new AdminCreateQnsPanel(myFrame, set ,topic);
                myFrame.setContentPane(contentPane);
                myFrame.setVisible(true);

            }
        });
        btnAdd.setFont(new Font("Tahoma", Font.BOLD, 16));
        btnAdd.setBounds(135, 502, 115, 29);
        add(btnAdd);

        JButton btnBack = new JButton("<Back");
        btnBack.setFont(new Font("Tahoma", Font.BOLD, 16));
        btnBack.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                JPanel contentPane = new AdminQuizSetNoPanel(myFrame, topic);
                myFrame.setContentPane(contentPane);
                myFrame.setVisible(true);
            }
        });
        btnBack.setBounds(70, 555, 115, 29);
        add(btnBack);

        JLabel lblQuizID = new JLabel(topic);
        lblQuizID.setFont(new Font("Tahoma", Font.BOLD, 30));
        lblQuizID.setBounds(156, 189, 147, 31);
        add(lblQuizID);

        JLabel lblSetNo = new JLabel("");
        lblSetNo.setFont(new Font("Tahoma", Font.BOLD, 30));
        lblSetNo.setBounds(107, 189, 31, 31);
        add(lblSetNo);


        }


    public AdminQuizOverallPanel(JFrame mf, int set, String topic) {
        super(mf);
        this.set = set;
        this.topic = topic;
        initComponents();

        setBounds(100, 100, 900, 750);
        setLayout(null);

        JLabel lblDisplay = new JLabel("");
        lblDisplay.setFont(new Font("Tahoma", Font.PLAIN, 17));
        lblDisplay.setBounds(550, 200, 287, 20);
        add(lblDisplay);

        JLabel lblSet = new JLabel("Set");
        lblSet.setBounds(49, 189, 93, 31);
        lblSet.setFont(new Font("Tahoma", Font.BOLD, 30));
        add(lblSet);


        JLabel lblSetNo = new JLabel(Integer.toString(set));
        lblSetNo.setBounds(107, 189, 31, 31);
        lblSetNo.setFont(new Font("Tahoma", Font.BOLD, 30));
        add(lblSetNo);


        JScrollPane scrollPane = new JScrollPane();
        scrollPane.setBounds(15, 246, 847, 225);
        add(scrollPane);

        table = new JTable();
        loadDataTable();
        scrollPane.setViewportView(table);


        JButton btnDelete = new JButton("Delete");
        btnDelete.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                actionPerformedDelete();



        }
         });

        btnDelete.setFont(new Font("Tahoma", Font.BOLD, 16));
        btnDelete.setBounds(611, 502, 115, 29);
        add(btnDelete);


        JButton btnSearch = new JButton("Search");
        btnSearch.setFont(new Font("Tahoma", Font.BOLD, 16));
        btnSearch.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0){
                lblDisplay.setText("You searched for: "+txtfSearch.getText());
                //findQuizDetails();

            }


        });

        btnSearch.setBounds(744, 160, 93, 29);
        add(btnSearch);

        txtfSearch = new JTextField();
        txtfSearch.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                if(e.getKeyCode()== KeyEvent.VK_ENTER)
                lblDisplay.setText("You searched for: "+txtfSearch.getText());
            }
        });
        txtfSearch.setBounds(550, 161, 194, 26);
        add(txtfSearch);
        txtfSearch.setColumns(10);

        JButton btnUpdate = new JButton("Update");
        btnUpdate.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                actionPerformedUpdate();
            }
        });
        btnUpdate.setFont(new Font("Tahoma", Font.BOLD, 16));
        btnUpdate.setBounds(365, 502, 115, 29);
        add(btnUpdate);

        JButton btnAdd = new JButton("Add");
        btnAdd.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                JPanel contentPane = new AdminCreateQnsPanel(myFrame, set ,topic);
                myFrame.setContentPane(contentPane);
                myFrame.setVisible(true);

            }
        });
        btnAdd.setFont(new Font("Tahoma", Font.BOLD, 16));
        btnAdd.setBounds(123, 502, 115, 29);
        add(btnAdd);


        JButton btnBack = new JButton("<Back");
        btnBack.setFont(new Font("Tahoma", Font.BOLD, 16));
        btnBack.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                JPanel contentPane = new AdminQuizSetNoPanel(myFrame, topic);
                myFrame.setContentPane(contentPane);
                myFrame.setVisible(true);
            }
        });
        btnBack.setBounds(70, 555, 115, 29);
        add(btnBack);

        JLabel lblQuizID = new JLabel(topic);
        lblQuizID.setFont(new Font("Tahoma", Font.BOLD, 30));
        lblQuizID.setBounds(156, 189, 147, 31);
        add(lblQuizID);

        }





    private void initComponents() {
        // TODO Auto-generated method stub

    }

    //Delete
    public void actionPerformedDelete(){

        System.out.println("performed delete 1****");

        int rowSelected = table.getSelectedRow();

        System.out.println("performed delete 2 *****"+ rowSelected);

        if(rowSelected >= 0){
            int resp = JOptionPane.showConfirmDialog(myFrame, "Confirm Delete?", "Confirmation", JOptionPane.YES_NO_CANCEL_OPTION);
            if(resp == JOptionPane.YES_OPTION){
                int selRowDel = (Integer)table.getModel().getValueAt(rowSelected, 0);
                QuizDetailsDA.deleteQuizDetails(selRowDel); //Call Delete method from QuizDetailsDA 
                //QuizDetailsDA.retrieveAllQuizDetails();
                setTableModelFromDB();
            }

            else {
                JOptionPane.showMessageDialog(myFrame, "No record selected", "Alert", JOptionPane.ERROR_MESSAGE);
            }

        }
    }



    //Update
    public void actionPerformedUpdate(){
        int rowSelected = table.getSelectedRow();
        if(rowSelected >= 0){
            int id = (Integer)table.getModel().getValueAt(rowSelected, 0);
            id1 = id;

            QuizDetails quizdt = QuizDetailsDA.retrieveQuizDetailsById(id);
            //Testing -> System.out.println("**** action performed update **: " + quizdt.getQuestionNo());



            //Call method from AdminCreateQnsPanel(JFrame mf, QuizDetails q, int set, String topic) constructor
            JPanel contentPane = new AdminCreateQnsPanel(myFrame,quizdt, set, topic);
            //After adding set and topic to this above constructor, cancel button is working in AdminCreateQnsPanel
            myFrame.getContentPane().removeAll();
            myFrame.setContentPane(contentPane);
            myFrame.setVisible(true); 



        }

        else {
            JOptionPane.showMessageDialog(myFrame, "No record selected", "Alert", JOptionPane.ERROR_MESSAGE);
        }

    } 


}

例如,我想更新id 1并成功更新。但是,当我想更新id 5时,更新的id 5项将更新为id 1.任何人在尝试更新数据库时都遇到此问题?

1 个答案:

答案 0 :(得分:0)

您应该提供有关此类问题的更多信息。很难理解你正在更新的上下文是什么。例如,如果您使用的是MySQL,则可以通过修复查询来解决此问题。 Id应该用于part部分而不是set部分。这样的事应该可以正常工作:

UPDATE TABLE `users` SET `name` = 'John' WHERE `id` = 1;