الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

كتابة الsequence داخل كود الحفظ

Featured Replies

بتاريخ:

السلام عليكم إخواني 

انا في مشروعي عملت صفحة فيها form الفورم دا به مجموعة من الinputbox  وفيها زر للحفظ وكاتب كود الحفظ برمجيا عن طريق جملة insert 

وفي حقل الid  كنت بخلي المستخدم يدخل الرقم يدويا وبعدين عملت sequence  بحيث يدخل الرقم اوتوماتيكيا بمجرد ما يضغط زر الحفظ 

ولكن كل مشكلتي اني كنت كاتب في جملة الinsert ان الuserid بياخد قيمتة من inptubox بعد عمل الSequence المفروض اني بدال ما اقولة getUserId أقولة اية  يارب تكون الفكرة وضحت علما بأن الsequence اسمها sequser

بتاريخ:
  • كاتب الموضوع

ظهرت الان مشكلة وانا بعمل تسجيل دخول

والمشكلة دي سببها اني لما عملت الSequence خليت حقل الuserId نوعة DBSequence 

لكن لما بخلية integer بيدخل بشكل سليم حد عنده حل للمشكلة دي كمان 

بتاريخ:

الآن أين المشكلة؟  ألاولى أم الثانية؟

بتاريخ:
  • كاتب الموضوع

الاثنين ان شاء الله

عايز اكتب الكود اللي يخليني لما ادوس الحفظ يضيف واحد 

ونشوف اية المشكلة دي ظهرت ليه

بتاريخ:

بعد عمل الSequence المفروض اني بدال ما اقولة getUserId أقولة اية

 

 

تقوم بإضافة الـجملة التالية للكود الذي عملته

                String getSeq = "select seq.nextval from dual";
                selectstat = con.prepareStatement(getSeq);
                rs = selectstat.executeQuery();

                int sequser = 0;
                if (rs.next())
                {
                 sequser = rs.getInt(1);
                }

وفي جملة الاسناد للقيمة تكون هكذا 

stat.setInt(1, sequser);

وتكمل باقي الكود الذي لديك

 

 

بتاريخ:
  • كاتب الموضوع

استاذة ميسم الكود جدا مش واضح انا مش عارف هكتب الكلام دا داخل الtry  ولا خارجها ولا فين بالضبط 

دا كود الحفظ بتاعي ممكن حضرتك تضفيلي عليه الكود  بالترتيب الصحيح وشكرا 

    public String save_Action() {

        // Add event code here...
        
        UserInfo user=(UserInfo)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("userKey");
        String username="hr";
        String password="hr";
        String thisurl="jdbc:oracle:thin:@localhost:1521:orcl";
        String getSeq="select seq.nextval from dual";       
        String sql= "INSERT INTO APP_USERS (USER_ID,USER_NAME,PASSWORD,FIRST_NAME,LAST_NAME,USER_TYPE)"+" VALUES('"+getUserId()+"','"+getUserName()+"','"+getPassword()+"','"+getFirstName()+"','"+getLastName()+"','"+getUserType()+"')";
            try{
              DriverManager.registerDriver((new OracleDriver()));   
                Connection con=DriverManager.getConnection(thisurl, username, password);
                Statement stat=con.createStatement();
                stat.executeUpdate(sql);
               setInsertMeg("تم إضافة المستخدم بنجاح");
                con.close();
                stat.close();                                         
                     } catch (SQLException e) {
            setInsertMeg("غير قادر على تسجيل المستخدم "+e.getMessage());
                
        }
 
        
        
        
        return null;
    }
بتاريخ:

حضرتك عامل insert  برمجياً تمام؟

حسناً المشكلة أنه تريد الـ userId لا يأخذها من الشاشة بل تريد إسناد قيمة لها من الـsequence 

حسناً في البداية نجلب قيمة الـ sequence  عن طريق الايعاز التالي 

String getSeq = "select seq.nextval from dual";
                selectstat = con.prepareStatement(getSeq);
                rs = selectstat.executeQuery();

                int sequser = 0;
                if (rs.next())
                {
                 sequser = rs.getInt(1);
                }

أصبحت الان قيمة الـ sequence  لدي بالمتغير sequser

حسناً بإيعاز الاضافة بدل ما أكتب getUserId()

أعطيه sequser

أين المشكلة 

                
                    try
                    {
                      DriverManager.registerDriver((new OracleDriver()));   
                        Connection con=DriverManager.getConnection(thisurl, username, password);
                                 String getSeq = "select seq.nextval from dual";
                                 selectstat = con.prepareStatement(getSeq);
                                 rs = selectstat.executeQuery();

                                 int sequser = 0;
                                 if (rs.next())
                                 {
                                  sequser = rs.getInt(1);
                                 }
                                 String sql= "INSERT INTO APP_USERS (USER_ID,USER_NAME,PASSWORD,FIRST_NAME,LAST_NAME,USER_TYPE)"+" VALUES('"+sequser+"','"+getUserName()+"','"+getPassword()+"','"+getFirstName()+"','"+getLastName()+"','"+getUserType()+"')";
                        Statement stat=con.createStatement();
                        stat.executeUpdate(sql);
                       setInsertMeg("تم إضافة المستخدم بنجاح");
                        con.close();
                        stat.close();                                         
                             } catch (SQLException e) {
                    setInsertMeg("غير قادر على تسجيل المستخدم "+e.getMessage());
                        
                }
                
                          
                
                return null;

ولا تنسى تعريف 

            PreparedStatement selectstat = null;
            ResultSet rs = null;

لإن أصبحت لديك جملة select

بتاريخ:

طالما تقوم باستخدام sequence فبداية من الإصدار 11g من قاعدة البيانات فيمكنك كتابة sequence داخل جملة الـ insert

insert into mytable(user_id) values (seq.nextval)

بتاريخ:
  • كاتب الموضوع

السلام عليكم استاذة ميسم دلوقتي انا كتبت الكود تمام لكن لما بكتب البيانات وبدوس حفظ بيديني الخطأ دا 

ora-02289 sequence does not exist

وبحثت عن المشكلة لقيتها بسبب ال privilege  هل الكلام دا صحيح ولا لا ولو صحيح اية اللي ممكن اعملة ملحوظة:المستخدم اللي انا بدخل بيه انا اللي منشئة عن طريق شاشةالمستخدمين 

بتاريخ:

حضرتك عامل sequence في قاعدة البيانات؟

وتأكد أيضاً من صلاحيات المستخدم 

بتاريخ:
  • كاتب الموضوع

انا عملتها عن طريق الjdeveloper ..

استاذة ميسم دلوقتي انا عامل جدول للمستخدمين 

فيه حقل الرقم واسم المستخدم والباس وورد 

ومسجل فيه بعض المستخدمين ولما عمل run للمشروع بيجبلي سفحة الدخول بدخل اسم المستخدم والباس بتاعه وبيدخل على الشاشات عادي مفيش اي مشاكل 

اذاي بقا ادي للمستخدم اللي داخل الجدول دا صلاحيات ؟؟؟

بتاريخ:

الان المشكلة تم حلها وهذا سؤال آخر ؟ فالآمر يتعلق بالصلاحيات

بتاريخ:
  • كاتب الموضوع

لا المشكلة لم يتم حلها انا بشك ان المشكلة في الصلاحيات يمكن لما اديلة صلاحيات تنحل المشكلة

فسأل كيف اعطي له الصلاحيات؟؟

تم تعديل بواسطة محمدمحمدطة

بتاريخ:

المستخدم الذي نعمل به الـ sequence على قاعدة البيانات هو الـ user في قاعدة البيانات مثل HR ,system 

غير مستخدمين النظام 

الكود جربته أنا يعمل بشكل جيد المشكلة لى حضرتك

  • بعد 3 أسابيع...
بتاريخ:

انا عملتها عن طريق الjdeveloper ..

استاذة ميسم دلوقتي انا عامل جدول للمستخدمين 

فيه حقل الرقم واسم المستخدم والباس وورد 

ومسجل فيه بعض المستخدمين ولما عمل run للمشروع بيجبلي سفحة الدخول بدخل اسم المستخدم والباس بتاعه وبيدخل على الشاشات عادي مفيش اي مشاكل 

اذاي بقا ادي للمستخدم اللي داخل الجدول دا صلاحيات ؟؟؟

 

 يمكن استخدام ال Appmodule connection بدلا من انشاء JDBC connection جديد 

بتاريخ:

حضرتك عامل insert  برمجياً تمام؟

حسناً المشكلة أنه تريد الـ userId لا يأخذها من الشاشة بل تريد إسناد قيمة لها من الـsequence 

حسناً في البداية نجلب قيمة الـ sequence  عن طريق الايعاز التالي 

String getSeq = "select seq.nextval from dual";
                selectstat = con.prepareStatement(getSeq);
                rs = selectstat.executeQuery();

                int sequser = 0;
                if (rs.next())
                {
                 sequser = rs.getInt(1);
                }

أصبحت الان قيمة الـ sequence  لدي بالمتغير sequser

حسناً بإيعاز الاضافة بدل ما أكتب getUserId()

أعطيه sequser

أين المشكلة 

                
                    try
                    {
                      DriverManager.registerDriver((new OracleDriver()));   
                        Connection con=DriverManager.getConnection(thisurl, username, password);
                                 String getSeq = "select seq.nextval from dual";
                                 selectstat = con.prepareStatement(getSeq);
                                 rs = selectstat.executeQuery();

                                 int sequser = 0;
                                 if (rs.next())
                                 {
                                  sequser = rs.getInt(1);
                                 }
                                 String sql= "INSERT INTO APP_USERS (USER_ID,USER_NAME,PASSWORD,FIRST_NAME,LAST_NAME,USER_TYPE)"+" VALUES('"+sequser+"','"+getUserName()+"','"+getPassword()+"','"+getFirstName()+"','"+getLastName()+"','"+getUserType()+"')";
                        Statement stat=con.createStatement();
                        stat.executeUpdate(sql);
                       setInsertMeg("تم إضافة المستخدم بنجاح");
                        con.close();
                        stat.close();                                         
                             } catch (SQLException e) {
                    setInsertMeg("غير قادر على تسجيل المستخدم "+e.getMessage());
                        
                }
                
                          
                
                return null;

ولا تنسى تعريف 

            PreparedStatement selectstat = null;
            ResultSet rs = null;

 يمكن استخدام ال Appmodule connection بدلا من انشاء JDBC connection جديد 

تم تعديل بواسطة visiterman

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.