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

كيف يمكن استخدام Relation operation في jsp

بدأه mahmoodsami في 24 فبراير 2010 · 9 رد · 773 مشاهدة · في JavaEE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

كيف يمكن استخدام Relation operation في jsp مع استخدام قواعد البيانات

حيث العمليتين == و =| تعمل لدي

ولكن =< => < > لا تعمل لدي ويخرج لي رسالة تقول ( كما في المرفق )

كما في المثال التالي

<%--
    Document   : datetimequiz
    Created on : Feb 16, 2010, 6:59:07 PM
    Author     : Mahmood2010
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Time & Date of Quiz</title>

</head>
<body>
<%@ page language="java" import="java.text.*,java.util.*" %>
<%@ page import ="java.sql.*" %>
<%@ page import ="javax.sql.*" %>
<%@ page import="java.sql.*" %>

<%
Statement st = null;
ResultSet rs = null;
String username=request.getParameter("userName");
session.putValue("username",username);
String pwd=request.getParameter("password");

//String user=request.getParameter("id");

Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection con = DriverManager.getConnection("jdbc:mysql://localhost/mahmood","root","password");
st= con.createStatement();
rs=st.executeQuery("select * from userregister where username='" + username + "'");
if(rs.next())
{

if(rs.getString("password").equals(pwd))
{
Statement mah = null;
ResultSet rs1 = null;

Class.forName("org.gjt.mm.mysql.Driver").newInstance();
java.sql.Connection con1 = DriverManager.getConnection("jdbc:mysql://localhost/mahmood","root","password");
mah= con1.createStatement();
rs1 = mah.executeQuery("select * from quiz");

java.util.Date now = new java.util.Date();
String DATE_FORMAT = "yyyy-MM-dd hh:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
String strDateNew = sdf.format(now) ;

if(rs1.next())
{
if (rs1.getString("t")<=(strDateNew))

{
out.println("welcome"+username);
}
else
{
out.println("Invlid password try again");
}
}
}


else
{
out.println("Wait");
}
}
%>
</BODY>
</HTML>

ارجو توضيح سبب خروج هذه الرسالة لي عند استخدام هذه العمليات

سلامي

اخوكم

محمود سامي

post-202915-12669598386825_thumb.gif

#2

إستخدم :

"ABC".compareTo("EFT")

أو أفضل أن تحول التاريخيين إلي java.util.Date و تقوم بمقارنتهما :

new Date().compareTo(new Date());
#3

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

بارك الله فيكم اخي هويدي

ماذا تقصد (( أفضل أن تحول التاريخيين إلي java.util.Date و تقوم بمقارنتهما ))

اخي ارجو ان توضح الاجابة بدون زحمة

سلامي

اخوك

محمود سامي

#4

اخي العزيز عندما طبقت الحالة الاولى تخرج لي الرسالة التالية

عندما نفذت الطريقة الاولى

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

سلامي

post-202915-12670096478295_thumb.gif

#5

أقول و بالله التوفيق,

إذا كان لديك متغيريان من نوع String و أردت أن تقارنهما فعليك إستخدام الدالة compareTo الموروثه من الواجهه java.lang.Comparable

مثال :

String str1 = "name";
String str2 = "yello";
int out = str1.compareTo(str2);

في حالة الفئه String فإن هذه الدالة تعطي 0 إذا كان الكائنان يحتويان نفس المحتوي, و واحد لو كان str1 أكبر من Str2 و -1 إذا كان العكس.

و كلمة أكبر هنا تتوقف علي نوع الكائن الذي تتم مقارنته فمثلا في حالة String فأكبر تعني أنه أتي قبله بالمعجم (راجع هذه الوصله)

أما في حالتك يا أخي:

java.util.Date now = new java.util.Date();
String DATE_FORMAT = "yyyy-MM-dd hh:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
String strDateNew = sdf.format(now) ;

if(rs1.next())
{
if (rs1.getString("t")<=(strDateNew))

فما نوع البيانات للحقل t من الجدول quiz ؟ و كيف يتم تخزينه في قاعدة البيانات

إذا كان نوع بياتات هذا الحقل DATE أو DATETIME أو TIMESTAMP فيجب عليك الحصول على قيمة هذا الحقل بإستخدام

rs1.getDate()

و ليس getString.

فيكون الكود كالتالي :

java.util.Date now = new java.util.Date();
if(rs1.next())
{
if (rs1.getDate("t").compareTo(now))

أما إذا كان VARCHAR فأنت وقعت في خطأ إلا إذا كنت تحصل عليه من كائن Date ثم تخزنه على أنه VARCHAR (وهذا مايبدو على الأقل أنك لم تقع به )

و في هذه الحالة بعد هذا السطر :

rs1.getString("t")

قم بتحويل ال String الراجع إلي Date و ليس العكس.

فيكون الكود كالتالي :

String DATE_FORMAT = "yyyy-MM-dd hh:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);

java.util.Date now = new java.util.Date();
if(rs1.next())
{
java.util.Date dbDate = sdr.parse(rs1.getString("t"))
if (dbDate.compareTo(now))
#6

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

اخي العزيز اشكرك على تعاونك معي

ولكن احب ان اوضح ما يلي :

الجدول

DROP TABLE IF EXISTS `mahmood`.`quiz`;
CREATE TABLE  `mahmood`.`quiz` (
  `t` datetime NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

هو يدوي حيث الشخص الاداري او الاستاذ هو من يحدد تاريخ الامتحان

ويكون التاريخ الذي ادخلته هو

'2010-02-17 06:15:58'

و بعد توجيهك كما يلي ولكن ما زال هناك حاجة وهي كما في الصورة في المرفق

الكود

<%--
    Document   : datetimequiz
    Created on : Feb 16, 2010, 6:59:07 PM
    Author     : Mahmood2010
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Time & Date of Quiz</title>

</head>
<body>
<%@ page language="java" import="java.text.*,java.util.*" %>
<%@ page import ="java.sql.*" %>
<%@ page import ="javax.sql.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.Date" %>

<%
Statement st = null;
ResultSet rs = null;
String username=request.getParameter("userName");
session.putValue("username",username);
String pwd=request.getParameter("password");

//String user=request.getParameter("id");

Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection con = DriverManager.getConnection("jdbc:mysql://localhost/mahmood","root","password");
st= con.createStatement();
rs=st.executeQuery("select * from userregister where username='" + username + "'");
if(rs.next())
{

if(rs.getString("password").equals(pwd))
{
Statement mah = null;
ResultSet rs1 = null;

Class.forName("org.gjt.mm.mysql.Driver").newInstance();
java.sql.Connection con1 = DriverManager.getConnection("jdbc:mysql://localhost/mahmood","root","password");
mah= con1.createStatement();
rs1 = mah.executeQuery("select * from quiz");

java.util.Date now = new java.util.Date();
String DATE_FORMAT = "yyyy-MM-dd hh:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
String strDateNew = sdf.format(now) ;

if(rs1.next())
{
if (rs1.getDate("t").compareTo(strDateNew))

{
out.println("welcome"+username);
}
else
{
out.println("Invlid password try again");
}
}
}


else
{
out.println("Wait");
}
}
%>
</BODY>
</HTML>

سلامي

اخي الله يبارك فيك ان تحل لي هذه المعضلة لانه انا جدا محتاجة وانت اهل لذلك ( واتوقع ما بقى الا الشئ البسيط ولكن لا اعرف كيف اكمله فارجو منك ان تعدل عليه )

اخوك

محمود سامي

post-202915-12670295489979_thumb.gif

1
#7

يا أخي, إستخدم هذا الكود :

java.util.Date now = new java.util.Date();
if(rs1.next())
{
if (rs1.getDate("t").compareTo(now))

أي أنك لست بحاجه للكود التالي, قم بحزفه نهائيا :

String DATE_FORMAT = "yyyy-MM-dd hh:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
String strDateNew = sdf.format(now) ;
#8

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

اخي الكريم قمت بالشئ الذي ارشدتني اليه ولكن الرسالة التي تخرج الي هي :

incompatible types

required boolean

found : int

والكود هو كما يلي :

<%--
    Document   : datetimequiz
    Created on : Feb 16, 2010, 6:59:07 PM
    Author     : Mahmood2010
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Time & Date of Quiz</title>

</head>
<body>
<%@ page language="java" import="java.text.*,java.util.*" %>
<%@ page import ="java.sql.*" %>
<%@ page import ="javax.sql.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.Date" %>

<%
Statement st = null;
ResultSet rs = null;
String username=request.getParameter("userName");
session.putValue("username",username);
String pwd=request.getParameter("password");

//String user=request.getParameter("id");

Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection con = DriverManager.getConnection("jdbc:mysql://localhost/mahmood","root","password");
st= con.createStatement();
rs=st.executeQuery("select * from userregister where username='" + username + "'");
if(rs.next())
{

if(rs.getString("password").equals(pwd))
{
Statement mah = null;
ResultSet rs1 = null;

Class.forName("org.gjt.mm.mysql.Driver").newInstance();
java.sql.Connection con1 = DriverManager.getConnection("jdbc:mysql://localhost/mahmood","root","password");
mah= con1.createStatement();
rs1 = mah.executeQuery("select * from quiz");

java.util.Date now = new java.util.Date();
if(rs1.next())
{
if (rs1.getDate("t").compareTo(now))
{
out.println("welcome"+username);
}
else
{
out.println("Invlid password try again");
}
}
}

else
{
out.println("Wait");
}
}
%>
</BODY>
</HTML>

اخي إن شاء الله الوقت الذي تصرفه في توجيهي في ميزان حسناتك :wub:

اخي لدي سوال يمكن ان يحل المشكلة هل انه الداله

java.util.Date now = new java.util.Date();

ترجع التاريخ فقط ام ترجع التاريخ والوقت

حيث انه نوع البيانه الى الحقل t في الجدول quiz

DATETIME

فيمكن هذا سبب المشكلة لكن بعد معرفة جوابك اخي الله يبارك فيك علما انه انا جعلت الحقل t في الجدول quiz الى DATE لكن بقة نفس المشكلة :unsure:

سلامي

اخوك

محمود سامي

post-202915-1267044051238_thumb.gif

تم تعديل هذه المشاركة بواسطة mahmoodsami في 24 فبراير 2010 في 23:55

#9

1- new Date() بترجع بالوقت و التاريخ

بالنسبه للنوع في قاعدة البيانات فلو أن الوقت مهم لك إستخدم DATETIME

2- أنا أسف يا أخي حقا,

فإن :

rs1.getDate("t").compareTo(now)

ترجع لنا integer :0, 1 , -1

0 لو أن التاريخان متساويان

1 لو أن الأول أكبر, و -1 لو أن الثاني أكبر

لذا إذا أردت أن تعرف إذا كان التاريخ من قاعدة البيانات أقل من التاريخ الاخر إستخدم :

[code]if ( rs1.getDate("t").compareTo(now) == -1 )
#10

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

اخي العزيز هويدي اشكرك شكر جزيل وبارك الله فيك

والله يجزيك عني خير الجزاء الحمد لله نجحة عندي :wink:

اللهم اسال الله ان يجزيك عني لوقتك الذي صرفته من اجل تعليمي

سلامي

اخوك

محمود سامي

1

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