簡體   English   中英

如何使用Java和MySQL確定插入或更新是否成功?

[英]How do you determine if an insert or update was successful using Java and MySQL?

我正在使用Java連接到MySQL數據庫。 我正在嘗試將數據插入或更新到數據庫中。

盡管我非常確定插入是成功的,但它返回false。

根據“execute”API,返回值為“如果第一個結果是ResultSet對象,則為true;如果是更新計數,則為false”或“沒有結果”。

如何確定插入或更新是否成功?

    public boolean insertSelections(String selection, String name){
        String sql ="INSERT INTO WORKREPORT VALUES (?,?,?,?,?)";
        boolean action = false;
        try {
            PreparedStatement stmt = conn.prepareStatement(sql);
            SimpleDateFormat dateFormat =  new java.text.SimpleDateFormat("yyyy:MM:dd hh:mm:ss");
            String formatDate = dateFormat.format(new java.util.Date(System.currentTimeMillis())); 
            java.util.Date mDate = dateFormat.parse(formatDate);
            java.sql.Timestamp timeStamp = new java.sql.Timestamp(System.currentTimeMillis());
//          Date time= new Date(mDate.getTime());

            stmt.setInt(1, Integer.parseInt(getNumberByName(name).trim()));
            stmt.setString(2, name);
//          stmt.setDate(3, time);
            stmt.setTimestamp(3, timeStamp);
            stmt.setString(4, selection);
            stmt.setString(5, "N/A");
            action = stmt.execute();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }   catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }   
        return action;
    }

由於您使用的是PreparedStatement ,因此可以調用executeUpdate() -

 int count = stmt.executeUpdate();
 action = (count > 0); // <-- something like this.

從上面的Javadoc( 返回 )鏈接,重點補充說,

(1) SQL數據操作語言 (DML)語句行計數或(2)0表示不返回任何內容的SQL語句。

如果要插入大量條目,我更喜歡addBatch()executeBatch()

首先,你應該知道:

boolean execute()在此PreparedStatement對象中執行SQL語句,該對象可以是任何類型的SQL語句。

ResultSet executeQuery()在此PreparedStatement對象中執行SQL查詢,並返回查詢生成的ResultSet對象。

int executeUpdate()執行此PreparedStatement對象中的SQL語句,該語句必須是SQL INSERT,UPDATE或DELETE語句; 或者不返回任何內容的SQL語句,例如DDL語句。

        int i = stmt.executeUpdate();
        if (i > 0) {
            System.out.println("success");
        } else {
            System.out.println("stuck somewhere");
        }

試試這個並檢查插件是否發生

如果你沒有得到異常,我認為查詢就可以了。 或者,您可以使用executeUpdate()( http://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html#executeUpdate()

您可以執行選擇計數(*)如果需要,可以驗證記錄數。

試試這個,無論你是想知道數據是否插入,如果插入記錄,它返回true或者返回false。

  if(action > 0){
      return true;
    }else{
      return false;
      }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM