تعلم كيفية إتصال تطبيقات الجوال j2me بقواعد بيانات MYSQL على سرفر مجانى بأستخدام Servlet

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

تعلم كيفية إتصال تطبيقات الجوال j2me بقواعد بيانات MYSQL على سرفر مجانى بأستخدام Servlet

مُساهمة من طرف أحمد مناع في الجمعة أغسطس 23, 2013 6:53 pm

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

أهلا وسهلا بكم إخوانى الكرام و مرحبا بكم فى درس جديد من دروس منتدى مصر التقنى ....فى هذا الدرس إن شاء الله تعالى سنتعلم سويا كيفية الاتصال بقواعد بيانات MYSQL من خلال تطبيقات الجوال ....هذا الدرس سينقسم الى ثلاث أقسام وهم على النحو التالى :

1_ انشاء قاعدة بيانات MySQL على سيرفر مجانى
2_ إنشاء الفئة Java Servlet
3_إنشاء تطبيق الجوال لاتصال بقاعدة البيانات MySQL


المرحلة الاولى : انشاء قاعدة بيانات MySQL على سيرفر مجانى 


1 - الدخول على الموقع من خلال الرابط الاتى http://www.db4free.net/


2- قم بإنشاء حساب كما فى الصورة التالية :



3 - ادخل على الميل هتلاقى رسالة تأكيد الاشتراك


4 - بعد الدخول على الميل وتأكيد الاشتراك سيتم تحويلك الى صفحة نجاح التسجيل وبها بياناتك


5 - الدخول على الحساب بكتابة اسم المستخدم وكلمة المرور للدخول على لوحة التحكم فى قاعدة بيانات MySQL والتى يطلق عليها (phpMyAdmin)


6 - هنقوم بالضغط على Database لانشاء الجداول وليكن بأسم R4R.MOBILE


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


7 - سوف تظهر لنا صفحة لكتابة اسماء الحقول و ليكن بأسم USERNAME, PASSWORD, BALANCE وتحديد نوع البيانات :



قم بالضغط على Save لانشاء الجدول .....او يمكنك استخدام لغة SQL فى انشاء الجداول مباشرا اذا كنت على علم بذلك

انا اخترت الطريقة الاسهل لتلافى المشاكل

الان انتهت المرحلة الاولى وهى انشاء قاعدة بيانات MySQL على سيرفر مجانى

المرحلة الثانية :إنشاء الفئة Java Servlet 

 _ النعريف بالفئة ......الفئة Java Servlet هي أحد فئات لغة الجافا التى يتم برمجتها لتقوم بتلقى الطلبات وبناءالإستجابات بفعالية مع خوادم الويب بأستخدام تطبيقات الجافا سواء كانت تلك التطبيقات خاصة بالجوالات أو الويب أو تطبيقات سطح المكتب ....و سيتم إفراد درس خاص بتلك الفئة و كيفية استخدامها بأحترافية فى دروس أخر أن شاء الله تعالى 

_خطوات إنشاء الفئة Java Servlet من خلال بنية Netbeans 

1_ قم بفتح Netbeans ثم أختر إنشاء مشروع جديد 

2_من المربع الحوارى الذى سيظهر ومن خلال التويب categories أختر نوع المشروع Java Web ليظهر لك فى الجانب الاخر بعض انواع المشروعات أختر منه Web Application كما فى الصورة التالية ثم أنقر next 


3_ قم بإعطاء أسم للمشروع و ليكن MobileServlet ثم أنقر next 


4_سيظهر لك المربع الحوارى التالى ....يمكنك النقر على زر الامر finish 


5_ستجد المجلدات و الملفات التى أنشأها التطبيق فى بنية  Netbeans  كما فى الشكل التالى :


6_قم بتحديد ايقونة المجلد Source Package ثم النقر يمين و من القائمة التى ستظهر أختر الامر New  ثم الامر New java package ....ليظهر لك المربع الحوارى فقم بإعطاء أسم مناسب للحزمة و ليكن r4r.MobileServlet 


7_ بعد ذلك قم بتحديد الحزمة r4r.MobileServlet ثم النقر يمين و من القائمة التى ستظهر أختر الامر Servlet كما فى الشكل التالى :

8_ قم بإعطاء الفئة Servlet أسم مناسب لها و ليكن dataBaseServlet ثم النقر على إنهاء و ذلك من خلال المربع الحوارى التالى :

9_ستجد تلك الفئة بها الاكواد التالية :

الرمز:

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


@WebServlet(name = "dataBaseServlet", urlPatterns = {"/dataBaseServlet"})
public class dataBaseServlet extends HttpServlet {

    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            
        } finally {            
            out.close();
        }
    }

    
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
تلك الشفرات ليست ضرورية لنا فى هذا التطبيق لذلك سأقوم بحذف الغير ضرورى لتصبح الفئة كما يلى :

الرمز:

import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;



public class dataBaseServlet extends HttpServlet {

            
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
      
    }

    
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
      
    }
     }
و كما ترون فى الفئة السابقة ليس بها غير طريقتين هما doGet وdoPost و فى دروس لاحقة سنتعلم كيفية استخدامها بالشرح الوافى ....الان سنقوم بأدراج بعض الشفرات اللازمة لاتصال بقواعد بيانات mysql على النحو التالى :

_ سنقوم بإستيراد المكتبة java.sql و المكتبة util.logging لتصبح المكتبات اللازمة لمشروعنا على النحو التالى :

الرمز:
import java.io.*;
import java.sql.*;
import java.util.logging.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
_ نبحث عن الطريقة doPost و نقوم بكتابة التعليمات البرمجية التالية فيها .....على النحو التالى :

الرمز:
 protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        // Set the response message's MIME type
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();

        // Reads line of text from a character-input stream
        BufferedReader br = request.getReader();
        String s = br.readLine();

        // Get a Specific String value from line of text.
        String user = s.substring(0, s.indexOf("?"));

        int start = s.indexOf("?") + 1;
        int end = s.indexOf('?', start + 1);
        String pass = s.substring(start, end);

        start = s.indexOf('?', start + 1);
        end = s.indexOf('?', start + 1);
        String balance = s.substring(start + 1, end);

        // initilized a new class
        DataBaseClient client = new DataBaseClient();
        client.store(user, pass, balance);   // passing value form class constructor

        // send response to the client
        out.println("Data sucessfully store into MYSQL DataBase");
        out.close();    // close text-output stream
    }
}
فى السطر الاول و الثانى ....قمنا بتحديد نوع الرسالة التى ستظهر عند استجابة السرفر
فى السطر الثالث و الرابع ...الاعلان عن الكائن br الذى سيقوم بقراءة النصوص من المدخلات و تخزينة المتغير النصى s  
من السطر الخامس و حتى الحادى عشر ....هو للحصول على قيم معينة من سطور المدخلات .
أما السطر الثانى عشر و الثالث عشر ....هو تجهيز الفئة DataBaseClient للاستخدام ....و هى الفئة التى سيتم إنشائها فى الخطوة التالية :

_ سنقوم بإنشاء فئة جديدة و ليكن بأسم DataBaseClient لتحمل كافة الشفرات للازمة للاتصال و تخزين البيانات فى قاعدة بيانات mysql التى تم إنشائها وذلك على النحو التالى :

الرمز:
private Connection con = null;
    private String sql = "INSERT INTO R4R.MOBILE (USERNAME, PASSWORD, BALANCE) VALUES ('?', '?', '?');";

    void store(String user, String pass, String balance) {

        try {
            // open class and load the connection Driver
            Class.forName("com.mysql.jdbc.Driver");
            // Open MYSQL Database connection
            con = DriverManager.getConnection("jdbc:mysql://b4free.net:3306/egytech", "user", "pass");
            if (!con.isClosed()) {
                // insert data into database
                PreparedStatement ps = con.prepareStatement(sql);
                ps.setString(1, user);
                ps.setString(2, pass);
                ps.setString(3, balance);
                ps.execute();
                System.out.println("Data Sucessfully Store into MYSQL DataBase");
            } else {
                System.out.println("Can't open MYSQL DataBase, try Later");
            }
        } catch (Exception ex) {
            Logger.getLogger(DataBaseClient.class.getName()).log(Level.SEVERE, "An Exception occurred due processing request", ex);
        } finally {
            // close Database connection
            try {
                if (con != null) {
                    con.close();
                }
            } catch (SQLException ex) {
                Logger.getLogger(DataBaseClient.class.getName()).log(Level.SEVERE, "An Exception occurred due processing request", ex);
            }
        }
    }
}
حيث أن :

فى السطر الاول قمنا بالاعلان عن كائن الاتصال بقواعد البيانات con
فى السطر الثانى قمنا بالاعلان عن متغير نصى sql وتمرير له جملة أستعلام لاضافة بيانات فى حقول الجدول R4R.MOBILE
فى السطر الثالث أنشأنا الطريقة store وفيها مايلى :
_ قمنا بفتح فئة وتحميل برنامج تشغيل اتصال لقواعد بيانات mysql ....وهو com.mysql.jdbc.Driver
_من خلال الاسلوب getConnection قمنا بفتح اتصال مع قاعدة البيانات التى أنشأناها وذلك عن طريق تمرير رابط سرفر قاعدة البيانات مع أسم قاعدة البيانات و أسم المستخدم و كلمة المرور الى السرفر
_ من خلال السلوب prepareStatement  التابع لكائن الاتصال con قمنا بتمير جملة الاستعلام المسؤلة عن تخزين البيانات فى حقول جدول قاعدة البيانات و التى قد خزناها فى المتغير النصى sql حتى يتم ادراج تلك البيانات الى قاعدة بيانات msql بنجاح

وهذكا نكون قدأنتهيا من إنشاء  Java Servlet ,والذى سيقوم بمهمة تلقى الطلبات وبناءالإستجابات مع سرفر قاعدة البيانات db4free.net

المرحلة الثالثة : إنشاء تطبيق الجوال Java Me

1_ قم بفتح Netbeans ثم أختر إنشاء مشروع جديد 

2_من المربع الحوارى الذى سيظهر ومن خلال التويب categories أختر نوع المشروع Java ME ليظهر لك فى الجانب الاخر بعض انواع المشروعات أختر منه Mobile Application

3__ قم بالنقر على زر التالى ليظهر لك مربع حوارى أخر يطالبك بأسم للتطبيق ...أكتب أسم r4r.mobileServlet مثلا مع مراعاة إزالة علامة الخيار   Create Hello MIDlet

4_تحديد ايقونة التطبيق ثم كليك يمين ومن القائمة التى ستظهر أختر الامر New ثم الامر  MIDlet ...ويمكنك أستخدام البنية المرئية  Visual MIDlet أذا أردت تصميم العناصر بدون الشفرة ....

5_سيظهر لك مربع حوارى يطالبك ببعض المعلومات كأسم الملف فضع  dataBaseSevletMidlet كأسم و اسم الكلاس الخاص ب dataBaseSevletMidlet

6_ بعد الانتهاء من كافة المعلومات ستجد الفئة تحتوى على الشفرة التالية :
الرمز:


import javax.microedition.midlet.*;


public class dataBaseSevletMidlet extends MIDlet {

    public void startApp() {
    }
    
    public void pauseApp() {
    }
    
    public void destroyApp(boolean unconditional) {
    }
}
سنقوم بإضافة بعض الشفرات على النحو التالى :

_ أستيراد المكتبات اللازمة ...على النحو التالى :
الرمز:
import java.io.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
_ سنقوم بتمديد الفئة .لتصبح على النحو التالى :
الرمز:
public class dataBaseSevletMidlet extends MIDlet implements CommandListener {
_ بداخل الفئة سنقوم بكتابة الشفرة التالية :
الرمز:
final Command SUBMIT = new Command("Store", Command.OK, 1);
    final Command EXIT = new Command("Exit", Command.EXIT, 2);
    private Form form;
    private TextField T_user, T_pass, T_balance;

    public dataBaseSevletMidlet() {
        // declaration field with initialization
        form = new Form("DataBase Connection");
        T_user = new TextField("Username", "", 10, TextField.PLAIN);
        T_pass = new TextField("Password", "", 10, TextField.PLAIN);
        T_balance = new TextField("Balance $", "", 12, TextField.NUMERIC);
        form.append(T_user);
        form.append(T_pass);
        form.append(T_balance);
        form.addCommand(SUBMIT);
        form.addCommand(EXIT);
        form.setCommandListener(this);
و الشفرة السابقة هى فقط لانشاء العناصر الرسومية و التى يمكنك انشائها بدون شفرة عن طريقة بنية NETBEANS بأستخدام الفئة Visual MIDlet

_ نبحث عن الطريقة startApp و نكتب الشفرة التالية وهى الخاصة بإظهار العناصر الرسومية على شاشة الجوال :

الرمز:
 public void startApp() {
        Display.getDisplay(this).setCurrent(form);
    }
_نبحث عن الطريقة destroyApp و نكتب فيها الامر التالى :
الرمز:
public void destroyApp(boolean unconditional) {
        notifyDestroyed();
    }
_ نقوم بإنشاء الطريقة commandAction و التى تقوم بتنفيذ الشفرة عند النقر على عناصر الاوامر command وذلك على النحو التالى :
الرمز:
  public void commandAction(Command c, Displayable d) {
        if (c == EXIT) {
            destroyApp(true);
        } else if (c == SUBMIT) {
            // Store value form TextField to String
            String user = T_user.getString().trim();
            String pass = T_pass.getString().trim();
            String balance = T_balance.getString().trim();
            // User can't allow to leave any TextField blank
            if (!user.equals("") && !pass.equals("") && !balance.equals("")) {
                // initialize new Class
                DataServletClient client = new DataServletClient(this, user, pass, balance);
                client.start();
            } else {
                Alert alert = new Alert("Blank Field Error", "Please Don't leave any Block empty!", null, AlertType.ALARM);
                alert.setTimeout(1000);
                Display.getDisplay(this).setCurrent(alert, d);
            }
        }

فى الشفرة أعلاه ...أستخدمنا جملة شرطية لمعرفة أى الاوامر التى تم النقر عليها .....فإذا تم النقر على الامر EXIT يتم الخروج من البرنامج ....و إن كان النقر على الامر SUBMIT يتم تخزين البيانات الموجودة فى مربعات النصوص فى المتغيرات التى تم الاعلان عنها user, pass, balance .....ثم بعد ذلك يتم تجهيز الفئة DataServletClien و التى سيتم أنشائها فى الخطوة التالية

7_ نقوم بأنشاء فئة فرعية جديدة بأسم DataServletClien وهى التى ستشمل كافة المعلومات للازمة للاتصال MobileServlet الذى أنشاناه فى تطبيق الويب ....و ذلك على النحو التالى :

الرمز:
class DataServletClient implements Runnable, CommandListener {

    //client can invoke servlet through SERVLET_URL
    final String SERVLET_URL = "http://localhost:8080/MobileServlet/dataBaseServlet";
    final Command EXIT = new Command("Exit", Command.EXIT, 1);
    private dataBaseSevletMidlet parent;
    private Display display;
    private String user, pass, balance;
    private TextBox tb = null;
    private HttpConnection hc = null;
    private InputStream is = null;
    private OutputStream os = null;
    StringBuffer sb = new StringBuffer();

    DataServletClient(dataBaseSevletMidlet aThis, String user, String pass, String balance) {
        this.parent = aThis;   // set field
        this.user = user;
        this.pass = pass;
        this.balance = balance;

        // declaration field with initialization
        display = Display.getDisplay(aThis);
        tb = new TextBox("Client Site Response..", null, 1024, 0);
        tb.addCommand(EXIT);
        tb.setCommandListener(this);
        display.setCurrent(tb);
    }

    void start() {
        // invoke new thread and begin in execution
        new Thread(this).start();
    }

    public void run() {
        try {
            // Open HTTP connection
            hc = (HttpConnection) Connector.open(SERVLET_URL);
            // client access servlet POST method
            hc.setRequestMethod(HttpConnection.POST);
            hc.setRequestProperty("User-Agent", "Profile/MIDP-2.0 Configuration/CLDC-1.0");
            hc.setRequestProperty("CONTENT-TYPE", "application/x-www-form-encoded");

            //Open DataOutputStream and write data into Stream(in byte form)
            String data = user + "?" + pass + "?" + balance + "?";
            os = hc.openDataOutputStream();
            os.write((data).getBytes());
            os.flush();

            //Open dataInputStream for connection.
            is = hc.openDataInputStream();
            int ch;
            //Read the data form DataInputStream
            while ((ch = is.read()) != -1) {
                sb.append((char) ch);          //Convert Byte into character
                System.out.println((char) ch); // Display data on console
            }
            tb.setString(sb.toString());       // data append to textBox
        } catch (IOException ex) {
            Alert a = new Alert("Server Error!", "Cannot connect to server. Ping the server to make sure it's in running state....",
                  null, AlertType.ERROR);
            a.setTimeout(Alert.FOREVER);
            display.setCurrent(a);
        } finally {
            //Close all the Stream and Connection
            try {
                if (os != null) {
                    os.close();
                }
                if (is != null) {
                    is.close();
                }
                if (hc != null) {
                    hc.close();
                }
            } catch (IOException e) {
            }
        }
    }

    public void commandAction(Command c, Displayable d) {
        if (c == EXIT || c == Alert.DISMISS_COMMAND) {
            parent.destroyApp(true);        //terminate application
        }
    }
}
و
كما ترون فى الشفرة أعلاه :

http://localhost:8080/MobileServlet/dataBaseServlet

هذا هو عنوان الوصول للتطبيق MobileServlet و الذى يحتوى على Servlet و الذى تم إنشاءة بأسم dataBaseServlet

8_ الان قم بشتغيل تطبيق الجوال و المخرجات ستكون على النحو التالى :









و فى النهاية أرجوا المعذرة فى قدرتى على التوضيح أكثر من ذلك


عدل سابقا من قبل أحمد مناع في الجمعة أغسطس 23, 2013 6:59 pm عدل 1 مرات

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 810
النقاط : 1479
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعلم كيفية إتصال تطبيقات الجوال j2me بقواعد بيانات MYSQL على سرفر مجانى بأستخدام Servlet

مُساهمة من طرف أحمد مناع في الجمعة أغسطس 23, 2013 6:54 pm

المصدر المعتمد عليه فى الشرح :

http://r4r.co.in/java/j2me/basic/example/Mobile_Servlet/dataBaseServletMidlet.shtml

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 810
النقاط : 1479
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعلم كيفية إتصال تطبيقات الجوال j2me بقواعد بيانات MYSQL على سرفر مجانى بأستخدام Servlet

مُساهمة من طرف المبرمج الطموح في السبت أغسطس 24, 2013 9:48 am


مشكور على جدا أخى أحمد ...و بالمناسبة فلقد وصلتم الى مراحل متقدمة فى الجافا ...و نتمنى أن نرى تطبيقات بأسم المنتدى للجوالات

المبرمج الطموح
الاشراف
الاشراف

تاريخ التسجيل : 18/02/2011
المساهمات : 117
النقاط : 213
التقيم : 6
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعلم كيفية إتصال تطبيقات الجوال j2me بقواعد بيانات MYSQL على سرفر مجانى بأستخدام Servlet

مُساهمة من طرف جورج صبحى في الأحد أغسطس 25, 2013 3:24 pm

lol! lol! lol! lol! lol! lol! 

مع تحياتى ليك ابواحميد ...فك الحظر بقى عاوز اتخانق معاك شوية

جورج صبحى
.....
.....

تاريخ التسجيل : 18/02/2011
المساهمات : 98
النقاط : 211
التقيم : 3
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعلم كيفية إتصال تطبيقات الجوال j2me بقواعد بيانات MYSQL على سرفر مجانى بأستخدام Servlet

مُساهمة من طرف أيمن الإبراهيم في الثلاثاء أغسطس 27, 2013 10:48 am

مشكور جدا

أيمن الإبراهيم
........
........

تاريخ التسجيل : 19/03/2013
المساهمات : 251
النقاط : 397
التقيم : 0
الدولة : سوريا
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعلم كيفية إتصال تطبيقات الجوال j2me بقواعد بيانات MYSQL على سرفر مجانى بأستخدام Servlet

مُساهمة من طرف حمادة الجسر في الجمعة سبتمبر 06, 2013 8:16 pm

مشكور على الدرس الرائع
بس لي طلب هل بالامكان رفع مشروع سورس بالكامل
اذا بالامكان

حمادة الجسر
.
.

تاريخ التسجيل : 04/09/2013
المساهمات : 8
النقاط : 16
التقيم : 0
الدولة : سوريا
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعلم كيفية إتصال تطبيقات الجوال j2me بقواعد بيانات MYSQL على سرفر مجانى بأستخدام Servlet

مُساهمة من طرف أحمد مناع في السبت سبتمبر 07, 2013 8:26 am

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

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 810
النقاط : 1479
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعلم كيفية إتصال تطبيقات الجوال j2me بقواعد بيانات MYSQL على سرفر مجانى بأستخدام Servlet

مُساهمة من طرف أيمن الإبراهيم في السبت سبتمبر 21, 2013 6:57 pm


استاذ احمد شو سبب كل هالاخطاء في فئة وما الحل

أيمن الإبراهيم
........
........

تاريخ التسجيل : 19/03/2013
المساهمات : 251
النقاط : 397
التقيم : 0
الدولة : سوريا
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعلم كيفية إتصال تطبيقات الجوال j2me بقواعد بيانات MYSQL على سرفر مجانى بأستخدام Servlet

مُساهمة من طرف أحمد مناع في الأحد سبتمبر 22, 2013 10:41 am

أخى ايمن ارجوا المعذرة لم استطيع أن ارى الاكواد التى فى الصورة ...لذلك ارجوا اعادة رفع صورة بحجم كبير ....ويمكنك استخدام 0zz0 لرفع الصور حيث تستطيع رفع الصورة الكبيرة عليه

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 810
النقاط : 1479
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعلم كيفية إتصال تطبيقات الجوال j2me بقواعد بيانات MYSQL على سرفر مجانى بأستخدام Servlet

مُساهمة من طرف أيمن الإبراهيم في الأحد سبتمبر 22, 2013 11:15 am

استاذ احمد هذا رابط الصورة

http://zakyshny.eu5.org/kleeja/uploads/egy-tech13798484051.png

أيمن الإبراهيم
........
........

تاريخ التسجيل : 19/03/2013
المساهمات : 251
النقاط : 397
التقيم : 0
الدولة : سوريا
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعلم كيفية إتصال تطبيقات الجوال j2me بقواعد بيانات MYSQL على سرفر مجانى بأستخدام Servlet

مُساهمة من طرف أحمد مناع في الأحد سبتمبر 22, 2013 11:20 am

اخى ايمن ...الصورة تظهر عدم أستيراد المكتبات التالية :
الرمز:

import java.io.*;
import java.sql.*;
import java.util.logging.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 810
النقاط : 1479
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعلم كيفية إتصال تطبيقات الجوال j2me بقواعد بيانات MYSQL على سرفر مجانى بأستخدام Servlet

مُساهمة من طرف أيمن الإبراهيم في الأحد سبتمبر 22, 2013 1:25 pm

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

http://zakyshny.eu5.org/kleeja/uploads/egy-tech13798561591.png

أيمن الإبراهيم
........
........

تاريخ التسجيل : 19/03/2013
المساهمات : 251
النقاط : 397
التقيم : 0
الدولة : سوريا
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعلم كيفية إتصال تطبيقات الجوال j2me بقواعد بيانات MYSQL على سرفر مجانى بأستخدام Servlet

مُساهمة من طرف أحمد مناع في الإثنين سبتمبر 23, 2013 6:44 am

أخى ايمن .....اليك الشفرة الكاملة servlet و الذى يحتوى على الفئتين dataBaseServlet و DataBaseClient على النحو التالى

الرمز:
import java.io.*;
import java.sql.*;
import java.util.logging.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;


public class dataBaseServlet extends HttpServlet {

            
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
      
    }

    
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        BufferedReader br = request.getReader();
        String s = br.readLine();

        String user = s.substring(0, s.indexOf("?"));

        int start = s.indexOf("?") + 1;
        int end = s.indexOf('?', start + 1);
        String pass = s.substring(start, end);

        start = s.indexOf('?', start + 1);
        end = s.indexOf('?', start + 1);
        String balance = s.substring(start + 1, end);

      
        DataBaseClient client = new DataBaseClient();
        client.store(user, pass, balance);  

        out.println("Data sucessfully store into MYSQL DataBase");
        out.close();    
    }
}
  class DataBaseClient {
 private Connection con = null;
    private String sql = "INSERT INTO R4R.MOBILE (USERNAME, PASSWORD, BALANCE) VALUES ('?', '?', '?');";

    void store(String user, String pass, String balance) {

        try {
        
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://b4free.net:3306/egytech", "user", "pass");
            if (!con.isClosed()) {
              
                PreparedStatement ps = con.prepareStatement(sql);
                ps.setString(1, user);
                ps.setString(2, pass);
                ps.setString(3, balance);
                ps.execute();
                System.out.println("Data Sucessfully Store into MYSQL DataBase");
            } else {
                System.out.println("Can't open MYSQL DataBase, try Later");
            }
        } catch (Exception ex) {
            Logger.getLogger(DataBaseClient.class.getName()).log(Level.SEVERE, "An Exception occurred due processing request", ex);
        } finally {
        
            try {
                if (con != null) {
                    con.close();
                }
            } catch (SQLException ex) {
                Logger.getLogger(DataBaseClient.class.getName()).log(Level.SEVERE, "An Exception occurred due processing request", ex);
            }
        }
    }
}    
    
  
و الذى ستقوم بتغير هو بيانات السطر التالى :

الرمز:
con = DriverManager.getConnection("jdbc:mysql://b4free.net:3306/egytech", "user", "pass");
ضع اسم قاعدة البيانات التى أنشأتها بدلا من egytech

ضع أسم المستخدم للسرفر بدلا من user

ضع كلمة المرور للسرفر بدلا من pass

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 810
النقاط : 1479
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعلم كيفية إتصال تطبيقات الجوال j2me بقواعد بيانات MYSQL على سرفر مجانى بأستخدام Servlet

مُساهمة من طرف أحمد مناع في الإثنين سبتمبر 23, 2013 6:50 am

ويمكنك ملاحظة أن الخطأ الوارد فى الصورة هو أنك كتبت الشفرة بدون إنشاء الفئة

الرمز:

 class DataBaseClient {

}
و الاكواد يجب أن تكتب بين قوسين الفئة السابقة ....

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 810
النقاط : 1479
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعلم كيفية إتصال تطبيقات الجوال j2me بقواعد بيانات MYSQL على سرفر مجانى بأستخدام Servlet

مُساهمة من طرف أيمن الإبراهيم في الثلاثاء سبتمبر 24, 2013 9:14 pm

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



هذا الكود يلي قمت بكتابته اين الغلط    ومشكور جدا 



import java.io.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
public class dataBaseSevletMidlet extends MIDlet implements CommandListener {
    final Command SUBMIT = new Command("Store", Command.OK, 1);
    final Command EXIT = new Command("Exit", Command.EXIT, 2);
    private Form form;
    private TextField T_user, T_pass, T_balance;
   
    public dataBaseSevletMidlet() {
        // declaration field with initialization
        form = new Form("DataBase Connection");
        T_user = new TextField("Username", "", 10, TextField.PLAIN);
        T_pass = new TextField("Password", "", 10, TextField.PLAIN);
        T_balance = new TextField("Balance $", "", 12, TextField.NUMERIC);
        form.append(T_user);
        form.append(T_pass);
        form.append(T_balance);
        form.addCommand(SUBMIT);
        form.addCommand(EXIT);
        form.setCommandListener(this);
     وهنااعطاني اشارة حمراء    public void startApp() {
            Display.getDisplay(this).setCurrent(form);
        }
       
        public void pauseApp() {
        }
       
        public void destroyApp(boolean unconditional) {
            notifyDestroyed();
        }
       
        public void commandAction(Command c, Displayable d) {
            if (c == EXIT) {
                destroyApp(true);
            } else if (c == SUBMIT) {
                // Store value form TextField to String
                String user = T_user.getString().trim();
                String pass = T_pass.getString().trim();
                String balance = T_balance.getString().trim();
                // User can't allow to leave any TextField blank
                if (!user.equals("") && !pass.equals("") && !balance.equals("")) {
                    // initialize new Class
                    DataServletClient client = new DataServletClient(this, user, pass, balance);
                    client.start();
                } else {
                    Alert alert = new Alert("Blank Field Error", "Please Don't leave any Block empty!", null, AlertType.ALARM);
                    alert.setTimeout(1000);
                    Display.getDisplay(this).setCurrent(alert, d);
                }
            }
        }  هنا اعطا اشارة حمراء
       

أيمن الإبراهيم
........
........

تاريخ التسجيل : 19/03/2013
المساهمات : 251
النقاط : 397
التقيم : 0
الدولة : سوريا
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعلم كيفية إتصال تطبيقات الجوال j2me بقواعد بيانات MYSQL على سرفر مجانى بأستخدام Servlet

مُساهمة من طرف أحمد مناع في الجمعة سبتمبر 27, 2013 5:42 pm

أخى ايمن سأحاول رفع مثال كامل قريبا وأرجوا المعذرة على عدم دخولى النت من صباح الاربعاء الماضى ...وذلك بسبب المظاهرات التى نشبت فى الدولة التى اقيم فيها حاليا ...مما تضطر السلطات بقفل النت من حين لاخر

ـــــــــــــــــــ التوقيع ــــــــــــــــــــ
سبحان الله وبحمدة .....سبحان الله العظيم

إن فقدت مكان بذورك التي بذرتها يوما ما سيخبرك المطر أين زرعتها ..لذا إبذر الخير فوق أي أرض وتحت أي سماء ومع أي أحد.. فأنت لا تعلم أين تجده ومتى تجده؟! إزرع جميلا ولو في غير موضعه .... فلا يضيع جميلا أينما زرعا .. فما أجمل العطاء... فقد تجد جزاءه في الدنيا أو يكون لك ذخرا في الآخرة

أحمد مناع
.
.

تاريخ التسجيل : 15/02/2011
المساهمات : 810
النقاط : 1479
التقيم : 69
الدولة : مصر
الجنس : ذكر

http://egy-tech.forumegypt.net

الرجوع الى أعلى الصفحة اذهب الى الأسفل

رد: تعلم كيفية إتصال تطبيقات الجوال j2me بقواعد بيانات MYSQL على سرفر مجانى بأستخدام Servlet

مُساهمة من طرف أيمن الإبراهيم في الجمعة سبتمبر 27, 2013 7:41 pm

الله يحميكن  ومشكور جدا جدا

أيمن الإبراهيم
........
........

تاريخ التسجيل : 19/03/2013
المساهمات : 251
النقاط : 397
التقيم : 0
الدولة : سوريا
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى