الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Parameter index out of range

بدأه kiubo في 18 مايو 2012 · 5 رد · 708 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته لدي رسالة خطاء لم استتطع من خلالها ايجاد الحل.....

كل مافعلته كالتالي ...

اخذت اخر ID تم اضافته الى قاعدة البيانات ثم حولته من

string to int

بعد ذالك قمت بازياده برقم واحد واعادته من جديد الى نوعه الاصلي كي اضيفه الي القاعده الكلام السابق يعمل بمثود خاصه به وتم اختباها ب system.out.print

وهي تعمل وتظر لي الرقم بمثل مااريد..

المشكله عند اضافة القيم الى النظام تظهر هذة الرساله مع العلم اختبرتها كا method ,,حتى بكتابة قيم مباشره من الكود نفسه تظهر لي نفس رسالة الخطاء

لا استطيع التنبؤ او التوقع من اين سأجد الحل .. لمن واجهتة لمثل الشكلة من قبل هل من اراء

java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:929)
	at com.mysql.jdbc.PreparedStatement.checkBounds(PreparedStatement.java:3711)
	at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3695)
	at com.mysql.jdbc.PreparedStatement.setString(PreparedStatement.java:4546)
	at kiubo.NewUser.addUser(NewUser.java:753)
	at kiubo.NewUser.save_ButtonActionPerformed(NewUser.java:370)
	at kiubo.NewUser.access$100(NewUser.java:35)
	at kiubo.NewUser$2.actionPerformed(NewUser.java:126)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6267)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6032)
	at java.awt.Container.processEvent(Container.java:2041)
	at java.awt.Component.dispatchEventImpl(Component.java:4630)
	at java.awt.Container.dispatchEventImpl(Container.java:2099)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
	at java.awt.Container.dispatchEventImpl(Container.java:2085)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4460)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0)

ال method الخاصه بااضافة القيم الى الجدول المطلوب

    public void addNewID() {

        try {
            String sql_1 = "select UserID from user order by UserID  asc limit 1;";
            pst = connection_11.getConnection().prepareStatement(sql_1);

            rs = pst.executeQuery() ;

            while (rs.next()) {
                String number = rs.getString("UserID");


                System.out.println(rs.getString(1));//bfore adding(10200000)

                int aInt = Integer.parseInt(number);
                aInt++;
                aString = Integer.toString(aInt);
                System.out.println(aInt);// after adding it works//(10200001)
setNewID(aString);
            }
        } catch (SQLException ex) {
            Logger.getLogger(DatabaseConnection.class.getName()).log(Level.SEVERE, null, ex);

        }

    }

هل هناك حلول بديله ...

هنا الmethods التى تكلمت عنها اعلاه..

    public void addNewID() {

        try {
            String sql_1 = "select UserID from user order by UserID  asc limit 1;";
            pst = connection_11.getConnection().prepareStatement(sql_1);

            rs = pst.executeQuery() ;

            while (rs.next()) {
                String number = rs.getString("UserID");

                 //String number = rs.getString(1);//
                System.out.println(rs.getString(1));//bfore adding(10200000)

                int aInt = Integer.parseInt(number);
                aInt++;
                aString = Integer.toString(aInt);
                System.out.println(aInt);// after adding it works//(10200001)
setNewID(aString);
            }
        } catch (SQLException ex) {
            Logger.getLogger(DatabaseConnection.class.getName()).log(Level.SEVERE, null, ex);

        }

    }

   public String getNewID() {

        return aString;
    }

    public void setNewID(String d) {

        this.aString=d;
    }
}

واعتذر بشدة عن كثرة اسألتي في هذا القسم لم اجد خبراء يستطيعون افادتي مثلكم ,

كن مثل طابع البريد ، التصق بهدفك...حتى تصل الى هناك!

#2

حسنا وجدت خيط رفيع

عندما اخفيت الميثود صاحبة اضافة القيمه UserID التلقائيه الكود يقبل القيم اذا المشكله منها في استخدامها.. :wacko:

طريقتي في تمثل هذة الفكرة خاطئة...

اذن اخواتي اريد اضافة ارقام تتولد من النظام نفسه لكن دون استخدام random

مع العلم جميع القيم الموجوده بالجدول قيم VARCHART

واريد اخذ اخر رقم موجود بالقاعدة ثم اقوم بالزياده بواحد ليصبح لدينا رقم ID جديد للمستخدم الجديد...

لا استطيع استخدام ال الزيادة التلقائيه من ال Mysql اريد تطبيقها بالكود...

كن مثل طابع البريد ، التصق بهدفك...حتى تصل الى هناك!

#3

الخطأ في السطر التالي بعد الضغط على زر الحفظ

at kiubo.NewUser.addUser(NewUser.java:753)

الداله addUser هل من الممكن ارفاق الكود الخاص بها؟

المسأله باعتقادي هي ازاحه خاطئة للindex

تحياتي

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#4
mental-driller كتب:

الخطأ في السطر التالي بعد الضغط على زر الحفظ

at kiubo.NewUser.addUser(NewUser.java:753)

الداله addUser هل من الممكن ارفاق الكود الخاص بها؟

المسأله باعتقادي هي ازاحه خاطئة للindex

تحياتي

اعتذر بشدة نسيت ارفق هذا الكود للداله

    public boolean addUser() {
// this method to add new user into database after validation state        
        String sql_adduser =  "insert into shc.user (UserID, FirstName, LastName,"
                + "Password,UserNo) values(?, ?, ?, ?, ?); ";
        try {

            pst = connection_11.getConnection().prepareStatement(sql_adduser);
            addNewID();//work
            System.out.println("the New ID" + getNewID());//work
//the problem start from here this the st parameters

            pst.setString(1, getNewID());
            pst.setString(2, firstNameUser_TextField.getText());
            pst.setString(3, lasttNameUser_TextField.getText());
            pst.setString(4, password_Field1.getText());

            if (Social_RadioButton.isSelected()) {
                pst.setString(5, "1");
            } else {
                if (Admin_RadioButton.isSelected()) {
                    pst.setString(5, "2");
                }
            }




 pst.execute(); 

//            String id = rs.getString("UserID");
      //      ID_show.setText(id);
            JOptionPane.showMessageDialog(null, "Saved");
            UpdateJTable();
            print_Button.enable(true);
            return true;
        } catch (Exception e) {
            JOptionPane.showMessageDialog(this, e + "SQL---");//java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
            System.out.print(e);
            e.printStackTrace();
            return false;
        }
    }

هناك رأي يقول ان هذة الطريقة كلياً خاطئه ,, حيث المبدأ والفكره .. ان استطعت تطبيقها فيكون شيء جميل ام لم استطعع سأجعلها مدخله يدوياً...اي ارجعها كا السابق..

كن مثل طابع البريد ، التصق بهدفك...حتى تصل الى هناك!

#5

اعتقد اني وجدت المشكله

في هذا الاستدعاء

 addNewID();//work

حيث انكي تستخدمين نفس الprepared statement في الداله addNew لذا فعند العوده من استدعاء الداله تكون الprepared statment تم ضبطها على الاستعلام الموجود في الداله addNew

كحل يمكنك وضع السطر

pst = connection_11.getConnection().prepareStatement(sql_adduser);

بعد السطر الذي يتم فيه استدعاء الداله addNew

تحياتي

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#6
mental-driller كتب:

اعتقد اني وجدت المشكله

في هذا الاستدعاء

 addNewID();//work

حيث انكي تستخدمين نفس الprepared statement في الداله addNew لذا فعند العوده من استدعاء الداله تكون الprepared statment تم ضبطها على الاستعلام الموجود في الداله addNew

كحل يمكنك وضع السطر

pst = connection_11.getConnection().prepareStatement(sql_adduser);

بعد السطر الذي يتم فيه استدعاء الداله addNew

تحياتي

نجح الكود ...

سبحان الله سطر واحد يقوم بهذة المشاكل ... :S

جزاك الله خير ..

كن مثل طابع البريد ، التصق بهدفك...حتى تصل الى هناك!

مواضيع مشابهة