2009-12-15 13 views
61

MySQL में मेरे पास दो टेबल, tableA और tableB हैं। मैं दो प्रश्नों पर अमल करने की कोशिश कर रहा हूँ:executeQuery के साथ डेटा मैनिपुलेशन कथन जारी नहीं कर सकता()

executeQuery(query1) 
executeQuery(query2) 

लेकिन मैं निम्नलिखित त्रुटि मिलती है:

can not issue data manipulation statements with executeQuery(). 

इसका क्या मतलब है?

+0

आप MySQL करने के लिए किसी भी उपयोग के अलावा अन्य JDBC के माध्यम से है - MySQL प्रशासक? या कमांड लाइन? –

+0

मेरे पास mysql व्यवस्थापक तक पहुंच है। हालांकि आवश्यकता ऐसी है। mysql डेटाबेस बनाया जाएगा, संशोधित, अद्यतन, आदि mysql व्यवस्थापक का उपयोग कर, लेकिन इसके बाद सभी ऑपरेशन जावा के साथ किए जाने की आवश्यकता है। – silverkid

+0

जेडीबीसी के माध्यम से डेटाबेस बनाने के लिए स्क्रिप्ट में इंडेक्स निर्माण को शामिल करने के लिए बेहतर, संभवत: आप पहले ही उनका उपयोग कर सकते थे। –

उत्तर

132

डेटा में हेरफेर करने के लिए आपको की बजाय executeUpdate() की आवश्यकता है।

Executes the given SQL statement, which may be an INSERT, UPDATE, or DELETE statement or an SQL statement that returns nothing, such as an SQL DDL statement.

4

क्या executeUpdate के लिए है कि:

यहाँ executeUpdate() जावाडोक से एक उद्धरण जो पहले से ही अपने स्वयं के पर एक जवाब है।

यहाँ अंतर का एक बहुत संक्षिप्त सारांश है: http://www.coderanch.com/t/301594/JDBC/java/Difference-between-execute-executeQuery-executeUpdate

+0

मैं सिर्फ लिंक पढ़ता हूं और बहुत ही जानकारीपूर्ण में, धन्यवाद। –

2

ExecuteQuery एक परिणाम सेट की उम्मीद है। मैं जावा/MySQL से परिचित नहीं हूं, लेकिन इंडेक्स बनाने के लिए आप शायद ExecuteUpdate() चाहते हैं।

+1

यह 'परिणामसेट' की अपेक्षा नहीं करता है। इसके बजाय ** ** एक 'परिणामसेट' लौटाता है। – BalusC

+1

यह अपेक्षा करता है कि डीबी से निर्धारित परिणाम मेरा मतलब है। –

12

डेटा मैनिपुलेशन कथन जारी करने के लिए executeUpdate() का उपयोग करें। executeQuery() केवल चयन प्रश्नों के लिए है (यानी प्रश्न जो परिणाम सेट लौटाते हैं)।

-1

कोष्ठक पर निष्पादित करें() को निष्पादित करने के अलावा, आपको SQL कथन का उपयोग करने के लिए एक चर भी जोड़ना होगा।

उदाहरण के लिए:

PreparedStatement pst = connection.prepareStatement(sql); 
int numRowsChanged = pst.executeUpdate(sql); 
+0

हैलो! एक सिर के रूप में, स्टैक ओवरफ़्लो पर प्रश्न और उत्तर अंग्रेजी में लिखे जाने चाहिए (अन्यथा वे हटाने और/या Google अनुवाद का जोखिम चलाते हैं)। चीयर्स! (_Hola! Como las cabezas para arriba, las preguntas y respuestas sobre stack overflow debe estar escrito en inglés (de lo contrario corren el riesgo de eliminación y/o Google traductor)। ¡सलाद! _) –

7

जब DML कथन को क्रियान्वित करने के लिए, आप executeUpdate/execute बजाय executeQuery उपयोग करना चाहिए।

executeQueryVSexecuteUpdateVSexecute

1

इस कोड मेरे लिए काम करता:

यहाँ एक संक्षिप्त तुलना है मैं मान सेट एक सम्मिलित कण और LAST_INSERT_ID() मिल के इस मूल्य एक का चयन करें कण; मैं जावा NetBeans का उपयोग 8.1, MySQL और java.JDBC.driver

   try { 

     String Query = "INSERT INTO `stock`(`stock`, `min_stock`, 
       `id_stock`) VALUES (" 

       + "\"" + p.get_Stock().getStock() + "\", " 
       + "\"" + p.get_Stock().getStockMinimo() + "\"," 
       + "" + "null" + ")"; 

     Statement st = miConexion.createStatement(); 
     st.executeUpdate(Query); 

     java.sql.ResultSet rs; 
     rs = st.executeQuery("Select LAST_INSERT_ID() from stock limit 1");     
     rs.next(); //para posicionar el puntero en la primer fila 
     ultimo_id = rs.getInt("LAST_INSERT_ID()"); 
     } catch (SqlException ex) { ex.printTrace;} 
संबंधित मुद्दे