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

المقارنة بين String او char(50)

بدأه بلاك تايقر في 28 أكتوبر 2011 · 5 رد · 620 مشاهدة · في قواعد بيانات MySQL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

اخواني انا عملت صفحة jsp مربوطة بالطبع مع قاعدة بيانات

لكن واجهتني مشكلة غريبة بصراحة

صفحة الـ jsp تعمل تسجيل دخول

يعني عندي قاعدة بيانات تحتوي على متغيرين

الاول هو الاسم المستعار username من نوع char(50)

الثاني هو الرقم السري passwd من نوع char(50)

فقمت بكتابة الكود التالي

<%
String username=request.getParameter("username");
String passwd=request.getParameter("passwd");
try
{
boolean exist=false;
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/job", "root", "***");
PreparedStatement ps=con.prepareStatement("select passwd from regis where username = ?");
            ps.setString(1,username);
ResultSet rs = ps.executeQuery();
            if( rs.getString(2).equals(passwd)){
                exist = true;
	    		response.sendRedirect("succ.html");
	    	}
	    	if(exist == false)
                response.sendRedirect("feild.html");
rs.close();
ps.close();
con.close();

}catch(Exception e){

}

%>

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

if( rs.getString(2).equals(passwd))

هل طريقة المقارنة غير صحيحة والا وش السالفة ؟؟

تم تعديل هذه المشاركة بواسطة بلاك تايقر في 28 أكتوبر 2011 في 16:59

#2

السلام عليكم ..

الــ ResultSet الناتجة من الاستعلام فيها عمود واحد ...لأن الأستعلام هو SELECT password FROM .. أي عمود واحد , و أنت تقارن بالعمود الثاني ...

فيكون الكود الصحيح :

if( rs.getString(1).equals(passwd))

و استخدم اسم العمود :

if( rs.getString("passwd").equals(passwd))

تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 28 أكتوبر 2011 في 11:17

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#3

المعذره يالغالي انا فعلاً كنت كاتب من البدايه مثل ما انت كتبت الآن

لكن اللي موجود في الكود كان بعد عدة محاولات من التعديل الغير منطقية احياناً لكن رغبة في الوصول الى حل وبأي طريقة

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

اتمنى المساعده الله يجزاكم خير

#4

يا اخوان انا اكتشفت انه لما يوصل للسطر التالي

if( rs.getString("passwd").equals(passwd))

يروح للـ Exception على طول

لاني سويت test بطباعة نصوص مرقمة بعد كل سطر

واكتشفت انه بمجرد ما يوصل لهذا السطر يروح يطبع اللي داخل الـ catch

البرنامج اللي استخدمه NetBeans و JCreator

استخدمت النت بينز بعد ما حولت الكود السابق الى servlet عشان يكون الكومبايلر اسرع واضمن من ناحية الاخطاء اللغوية

ارجو الافاده

#5

يا أخوان البرنامج طبعلي الخطأ هذا

java.sql.SQLException: Before start of result set

هل يقصد انه بدأ يقارن في البرنامج قبل ماتطلعلي نتيجة تنفيذ الكويري ؟

#6

تم حل المشكلة

للإفادة، يجب استخدام السطر rs.next(); بعد تنفيذ الكويري مباشرة

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