2014-06-24 2 views
14

मैं एक MySQL डेटाबेस से कनेक्ट करने के लिए जावा का उपयोग कर रहा हूं। मैं डेटाबेस में डेटा डालने या अपडेट करने की कोशिश कर रहा हूं।जावा और MySQL का उपयोग करके कोई प्रविष्टि या अद्यतन सफल होने पर आप कैसे निर्धारित करते हैं?

भले ही मुझे पूरा यकीन है कि सम्मिलन सफल रहा है, यह झूठा रिटर्न देता है।

"निष्पादन" एपीआई के अनुसार, वापसी मान "सत्य है यदि पहला परिणाम परिणाम परिणाम है; गलत है अगर यह एक अद्यतन गिनती है या कोई परिणाम नहीं हैं"।

मैं कैसे निर्धारित कर सकता हूं कि मेरा डालने या अपडेट सफल हुआ या नहीं?

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; 
    } 
+1

'अद्यतन op (INSERT, अद्यतन, हटाएं) 'के प्रकार के लिए' stmt.executeUpdate();' के साथ प्रयास करें। –

उत्तर

19

जब से तुम PreparedStatement उपयोग कर रहे हैं आप executeUpdate() कॉल कर सकते हैं - जावाडोक से

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

(रिटर्न) ऊपर के लिंक, जोर कहा,

तो (1) पंक्ति संख्या एसक्यूएल डेटा मैनिपुलेशन भाषा (डीएमएल) कथन या एसक्यूएल स्टेटमेंट्स के लिए (2) 0 के लिए जो कुछ भी वापस नहीं करता है।

आप प्रविष्टियों की एक बड़ी संख्या सम्मिलित करना चाहते हैं, तो मैं addBatch() और executeBatch() पसंद करेंगे।

-1

यदि आपको कोई अपवाद नहीं मिलता है तो मुझे लगता है कि क्वेरी ठीक हो गई है। या, आप executeUpdate() (http://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html#executeUpdate())

का उपयोग करने में सक्षम हो सकते हैं आप एक चुनिंदा गिनती (*) कर सकते हैं यदि आप चाहें तो रिकॉर्ड्स की संख्या निर्धारित करें।

+0

मैं वर्तमान में एक डिलीट क्वेरी चला रहा हूं जिसे मेरे परीक्षण में 1 रिकॉर्ड हटा देना चाहिए।क्वेरी पास होती है, हालांकि यह 0 बदले गए रिकॉर्ड बदलेगी। इसके लिए यह सही नहीं है। चयन गणना (*) काम करेगी, लेकिन इसकी आवश्यकता नहीं है। –

9

यह सब आपको पता होना चाहिए की पहली:

बूलियन निष्पादित() इस PreparedStatement वस्तु में एसक्यूएल बयान है, जो SQL विवरण के किसी भी प्रकार हो सकता है पर क्रियान्वित।

ResultSet executeQuery() इस PreparedStatement वस्तु में SQL क्वेरी निष्पादित करता है और क्वेरी द्वारा उत्पन्न ResultSet वस्तु देता है।

पूर्णांक executeUpdate() इस PreparedStatement वस्तु में एसक्यूएल बयान है, जो एक SQL सम्मिलित करें, अद्यतन है या बयान को हटाना होगा पर क्रियान्वित; या एक SQL कथन जो कुछ भी नहीं देता है, जैसे डीडीएल कथन।

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

     } 

इस कोशिश करो और इसे बाहर की जाँच डालने हो रहा है या नहीं,

0

इस प्रयास करें आप को पता है डेटा या डाला जाता है नहीं, अगर रिकॉर्ड इसे वापस डाला जाता है कि क्या चाहते हैं या नहीं, सच या फिर झूठे ।

if(action > 0){ 
     return true; 
    }else{ 
     return false; 
     } 
संबंधित मुद्दे

 संबंधित मुद्दे