java تحميل - لا يمكن إصدار عبارات معالجة البيانات باستخدام executeQuery()




mysql mysql-connector-java-5.1.23-bin.jar (7)

في MySQL لدي جدولين ، tableA و tableB . أحاول تنفيذ استعلامين:

executeQuery(query1) 
executeQuery(query2)

لكنني أتلقى الخطأ التالي:

can not issue data manipulation statements with executeQuery().

ماذا يعني هذا؟


Answers

يتوقع ExecuteQuery مجموعة نتائج. أنا لست على دراية Java / MySQL ، ولكن لإنشاء فهارس ربما تريد ExecuteUpdate ().



عند تنفيذ عبارة DML ، يجب استخدام executeUpdate / execute بدلاً من executeQuery .

فيما يلي مقارنة موجزة:


استخدم executeUpdate() لإصدار عبارات معالجة البيانات. يتم فقط استخدام executeQuery() للاستعلامات SELECT (مثل الاستعلامات التي ترجع مجموعة نتائج).


بالإضافة إلى executeUpdate () على الأقواس ، يجب أيضًا إضافة متغير لاستخدام عبارة SQL.

فمثلا:

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

يعمل هذا الرمز بالنسبة لي: أقوم بتعيين القيم التي تحتوي على INSERT واحصل على LAST_INSERT_ID () لهذه القيمة مع SELECT؛ يمكنني استخدام جافا 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;}

يعتمد على التطبيق ، حقا.

ضع في اعتبارك تعيين طابع زمني من قبل مستخدم إلى خادم في نيويورك ، للحصول على موعد في Sanghai. الآن عندما يتصل المستخدم في Sanghai ، يصل إلى نفس الطابع الزمني التعيين من خادم معكوسة في طوكيو. وسيرى التعيين في وقت طوكيو ، يقابله وقت نيويورك الأصلي.

لذلك بالنسبة للقيم التي تمثل وقت المستخدم مثل موعد أو جدول زمني ، يكون التاريخ والوقت أفضل. يسمح للمستخدم بالتحكم في التاريخ والوقت المطلوب ، بغض النظر عن إعدادات الخادم. الوقت المحدد هو الوقت المحدد ، لا يتأثر بالمنطقة الزمنية للخادم ، أو المنطقة الزمنية للمستخدم ، أو بالتغييرات في طريقة حساب التوقيت الصيفي (نعم إنه يتغير).

من ناحية أخرى ، بالنسبة إلى القيم التي تمثل وقت النظام مثل معاملات الدفع أو تعديلات الجدول أو التسجيل ، استخدم دائمًا الطوابع الزمنية. لن يتأثر النظام بتحريك الخادم إلى منطقة زمنية أخرى ، أو عند المقارنة بين الخوادم في مناطق زمنية مختلفة.

الطوابع الزمنية هي أيضا أخف وزنا على قاعدة البيانات وفهرستها بشكل أسرع.







java mysql jdbc