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

طريقة عمل واجهة اسم المستخدم

بدأه Game11 في 2 يونيو 2010 · 8 رد · 915 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

في الساعات السابقة تراكمت علي الاخطاء من جميع النواحي , و حاولت اصلاحها لكن لا جدوى , توفرت لدي افضل الحلول بمساعدة اعضاء هذا المنتدى الرائع لكن لا فائدة , فقلت لنفسي دع هذا جانبا , فامكاني عمل ذلك في جهاز اخر , ,

انا رغبت انشاء واجهة المستخدم تحتوي على التسجيل و تسجيل الدخول , الفكرة هي بان الستخدم في البداية يقوم بالتسجيل و البيانات تنتقل الى القاعدة , وفي حالة رغبته بالدخول فان البرنامج يتفحص البيانات ان كانت موجودة سابقا بواسطة التسجيل فانه يقوم باظهار بقية الواجهة (جزء من الواجهة مخفي لحينما يقوم المستخدم بادخال البيانات الصحيحة ) و ان كانت خاطئة لا يظهر بقية الواجهة و تبقى على حالها ,, سؤالي بسيط : كيف ؟

حينما رغبت بمقارنة البيانات المدخلة عن طريق حقل تسجيل الدخول مع البيانات الموجودة في القاعدة بحيث البرنامج يقوم بمقارنة بيانات تسجيل الدخول مع كل سجل من سجلات الجدول موجود في القاعدة فاذا تساوت مع احدى السجلات ينفذ الامر و ان لم يتساوى لا ينفذ و هذا هو الشفرة التي كتبتها و لم افلح :

  public void actionPerformed(ActionEvent e) {
        if(e.getSource()==OK1)
        {

           ResultSet rs= MyConnector.excuteQuery("select* from Register");
           while(rs.next())
           {
               if(UserName.getText().equls(rs.getString(UserName)))
                      jLabel3.setVisible(true); 
           }



    }

مع العلم UserName في بداية الشرط هو عبارة عن مربع النص الموجود في الواجهة ,, و UserName الاخرى هي عبارة عن اسم العمود الاول في الجدول .. (ملاحظة : الخطأ يشير الى كلمة getString الموجودة في الشرط )

اريد تعليقاتكم على الشفرة و نصائحكم و شكرا

تم تعديل هذه المشاركة بواسطة Game11 في 2 يونيو 2010 في 16:43

#2

لكى تطلب مستخدم معين

باسم الدخول والرقم السرى الذى ادخله المستخدم

استخدم مثل ذلك الكود

 ResultSet rs = MyConnector.excuteQuery("select * from Register where ( username= ' "+username.getText().trim()+" ' and password= ' "+password.getText().trim()+" ')");

واى اسئله تحت امرك ان شاء الله ويارب نقدر نفيدك

1

Software Developer
Mahmoudkelany.com


 

#3
Eng.Hamzawy كتب:

لكى تطلب مستخدم معين

باسم الدخول والرقم السرى الذى ادخله المستخدم

استخدم مثل ذلك الكود

 ResultSet rs = MyConnector.excuteQuery("select * from Register where ( username= ' "+username.getText().trim()+" ' and password= ' "+password.getText().trim()+" ')");

واى اسئله تحت امرك ان شاء الله ويارب نقدر نفيدك

مشكور يا الغالي ,, طيب كيف امسك قيم معينة من الجدول مثلا لو اردت اسرد جميع UserName في الواجهة , كيف امسك القيم من الجدول الموجود في القاعدة و اضعها في واجهة المشروع ؟؟؟

تم تعديل هذه المشاركة بواسطة Game11 في 2 يونيو 2010 في 18:03

#4
Game11 كتب:

مشكور يا الغالي ,, طيب كيف امسك قيم معينة من الجدول مثلا لو اردت اسرد جميع UserName في الواجهة , كيف امسك القيم من الجدول الموجود في القاعدة و اضعها في واجهة المشروع ؟؟؟

العفو اخى تحت امرك

هذا الامر يأتى لك بكل الـ username

ResultSet rs = MyConnector.excuteQuery("select UserName from Register ");

بدال لم اضع شرط فانه ياتى بكل المستخدمين

وبعد ذلك يمكنك وضعهم فى array وعرضهم فى JTable

يارب اكون افدتك

تحياتى

تم تعديل هذه المشاركة بواسطة Eng.Hamzawy في 2 يونيو 2010 في 18:21

1

Software Developer
Mahmoudkelany.com


 

#5

بس اخى العزيز هناك شىء اردت ان ابلغك اياه

انت فى هذا الامر

 ResultSet rs = MyConnector.excuteQuery("select * from Register where ( username= ' "+username.getText().trim()+" ' and password= ' "+password.getText().trim()+" ')");

لابد من ان تجعل username فريد من نوعه ولا يتكرر ولا يمكن طبعا تركه فارغ

يعنى not null و Unique

لان اذا تشابه مستخدمين بنفس الاسم و صادف ان تشابه الرقم السرى

فهذا يعمل غلط فى قواعد البيانات

لعلك تعلم ذلك ولكن اردت التنبيه فقط

Software Developer
Mahmoudkelany.com


 

#6
Eng.Hamzawy كتب:

العفو اخى تحت امرك

هذا الامر يأتى لك بكل الـ username

ResultSet rs = MyConnector.excuteQuery("select UserName from Register ");

بدال لم اضع شرط فانه ياتى بكل المستخدمين

وبعد ذلك يمكنك وضعهم فى array وعرضهم فى JTable

يارب اكون افدتك

تحياتى

اها , يعني كل البيانات التي أحصل عليها من الجدول تتخزن في rs , انا الصراحة منحرج من كثرة اسئلتي :blush:

الان rs اصبحت تحتوي على عدة قيم ,, كيف احدد قيمة معينة (UserName) من المتغير rs ؟

#7
Eng.Hamzawy كتب:

بس اخى العزيز هناك شىء اردت ان ابلغك اياه

انت فى هذا الامر

 ResultSet rs = MyConnector.excuteQuery("select * from Register where ( username= ' "+username.getText().trim()+" ' and password= ' "+password.getText().trim()+" ')");

لابد من ان تجعل username فريد من نوعه ولا يتكرر ولا يمكن طبعا تركه فارغ

يعنى not null و Unique

لان اذا تشابه مستخدمين بنفس الاسم و صادف ان تشابه الرقم السرى

فهذا يعمل غلط فى قواعد البيانات

لعلك تعلم ذلك ولكن اردت التنبيه فقط

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

#8
Game11 كتب:

اها , يعني كل البيانات التي أحصل عليها من الجدول تتخزن في rs , انا الصراحة منحرج من كثرة اسئلتي :blush:

الان rs اصبحت تحتوي على عدة قيم ,, كيف احدد قيمة معينة (UserName) من المتغير rs ؟

لا طبعا مش بتخزن فى rs

انت بعد كدا بتخزن القيم دى فى array زى ما قولت لك قبل كدا

الـ rs تشير الى صف واحد داخل قواعد البيانات

بعد ذلك عندما تريد الوصول لتقاطع الاعمده مع ذلك الصف تقوم باستخدام

rs.getString(رقم العمود او اسمه );

او

اى شىء حسب اللى مخزن فى قواعد البيانات

هناك العديد من الدوال لكل متغير long , int , string ,time , date , ...

انما اذا اردت تحديد قيمه معينه من rs فانك عند ذلك تقوم بطريقه طويله فى تحديد الكل ثم تحديد username معين

ولكن اذا استخدمت الشرط فى الـ query

استخدمت الشرط where بمعنى

 select * from Register where username= ' Eng.Hamzawy ' ;

لكن اذا اردت استخدام الطريقه اللتى تريد ان تختار قيمه تساوى الـمستخدم المعين هذا

فانك فى داله الrs

تصنع شرط

هكذا

if(rs.getString("userName") == ' Eng.Hamzawy '){
//    return anyThing you want ;
}

ولكن لا انصحك بهذه الطريقه

انما تستخدم هذه الطريقه احسن

 select * from Register where username= ' Eng.Hamzawy ' ;

اسرع من حيث البحث والضغط على قواعد البيانات

اتمنى اكون افدتك بجد

تحياتى

Game11 كتب:

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

العفو

متشكر ربنا يخليك

ما حضرتك بسم الله ما شاء الله طلعت اذكى منى اهوو :lol: :lol:

والحمدلله ان حضرتك عملتها فى الحسبان

تحياتى

تم تعديل هذه المشاركة بواسطة Eng.Hamzawy في 2 يونيو 2010 في 19:01

Software Developer
Mahmoudkelany.com


 

#9

ممكن تطلع على الدووال الخاصه بـ ResultSet

ادخل على الرابط التالى

http://java.sun.com/j2se/1.4.2/docs/api/java/sql/ResultSet.html

ويمكن النظر الى Method Summary

وسوف ترى كل الدوال اللى تمكنك من الحصول على بيانات من قواعد البيانات حسب كل متغير عندك فقواعد البيانات

مثلا

فى الداتا بيز هيكون العمود بتاعك من نوع number هتلاقى فالمقابل ليها getInt() , getLong()

مثلا العمود من نوع varchar2(30) فى المقابل ليها هتلاقى getString

مثلا العمود من نوع time هتلاقى فى المقابل getTime()

هتلاقى شرح وتفسير لذلك على الرابط السابق

تحياتى

1

Software Developer
Mahmoudkelany.com


 

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