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

ارجاع جدول لعرضه عند client

بدأه hicham@com في 22 يناير 2012 · 4 رد · 469 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

كيف أستطيع ارجاع results إلى client لكي يعرض الجدول في client

class server:

import java.io.*;
import java.net.*;
import java.sql.*;
import java.util.Properties;
import javax.swing.JOptionPane;

class DataServer
{
	static String query="";
	static ResultSet rs;
	static Statement st;
	static Connection con;
	static String result="";
    private static Connection on;

	public static void main(String args[]) throws Exception
	{

		try
		{
		ServerSocket datasersoc = new ServerSocket(4444);
		Socket datasoc = datasersoc.accept();

		System.out.println("connection client  : "+(datasoc.getInetAddress().getHostName()));

		ObjectOutputStream oos = new ObjectOutputStream(datasoc.getOutputStream());
		ObjectInputStream ois = new ObjectInputStream(datasoc.getInputStream());

		query = ois.readObject()+"";
                System.out.println(query);
               // String s="ok client send database" ;

               Class.forName("com.mysql.jdbc.Driver").newInstance(); 
        Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/tp_hicahm","root", "root");



					System.out.println("the connection set");

					Statement stat = conn.createStatement();


					//String selectQuery = "Select * from hicham";
					ResultSet results = stat.executeQuery(query);
						System.out.println("the reslut as the follwoing : ");

					System.out.println( "id " + "\t" + "user"+"\t"+"email");
					System.out.println("----" +"\t" + "----"+ "\t" +"---");
					while (results.next())
					{
				System.out.println(results.getInt("id") +"\t" +results.getString("user")+"\t" +results.getString("email") );
						    }            
      oos.writeObject(results);    
}

          catch (Exception e) {

              JOptionPane.showMessageDialog(null,e.getMessage());
               System.exit(0);
        }}


	}

class client:

import java.net.*;
import java.io.*;
import java.sql.*;

class client
{
	public static void main(String arg[])
	{
		String query="";
		String result ="";


		try
		{

		 Socket Soc = new Socket("127.0.0.1",4444);

		  ObjectOutputStream oos = new ObjectOutputStream(Soc.getOutputStream());
		  ObjectInputStream ois = new ObjectInputStream(Soc.getInputStream());

                 BufferedInputStream in = new BufferedInputStream(ois);
		 /**************************************************************************************/
                 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));                     //reader consol 
		 query = br.readLine();
               //  System.out.println(query);
		 /*****************************************************************************************/
                  oos.writeObject(query);

		 result = ois.readObject()+"";
		 System.out.println(result);


	}
		catch(Exception e)
		 {
			System.out.println("Connection  Closed client ");

		 }
		 }
}

:sad: :sad:

#2

السلام عليكم

مبدئيا كائن من نوع resultSet غير قابل للارسال

الا اذا بنيت الواجهة serializable

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

تم تعديل هذه المشاركة بواسطة sahraoui17 في 22 يناير 2012 في 11:13

#3

استخدم Beans تقوم بوصف فيها مجموعه من الحقول التى تريدها

مثل الـ ID , Email , Name , ... وقوم بعمل ArrayList من هذه الـ Beans

وقم بارسالها الى العميل ومنها قوم بالتعامل معاها

وكما قال الاخ sahraoui17

انه لابد من ان تكون هذه الـ Class تحتوى على الـ Serializable interface

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

بالتوفيق ان شاء الله

Software Developer
Mahmoudkelany.com


 

#4
sahraoui17 كتب:

السلام عليكم

مبدئيا كائن من نوع resultSet غير قابل للارسال

الا اذا بنيت الواجهة serializable

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

شكرا أخي serializable

لقد قمت بعمل الواجهة serializable

كما يلي

public class  ShowData implements Serializable
 {
ResultSet result;

    public ShowData(ResultSet result) {
        this.result = result;
    }


    public ResultSet getResult() {
        return result;
    }


{

ثم قمت في server

ResultSet results = stat.executeQuery(query);
ShowData p = new ShowData(results);

في client

ShowData p = new ShowData();
 = (ShowData) ois.readObject();

لكن لا يقوم بعرض الجدول في client

:sad: :sad: :sad:

#5

اخى الكريم لا يمكنك ارسال الـ ResultSet الى العميل

لانه ليس Serializable

شروط ارسال كائن من العميل للخادم او العكس

ان يكون الـ Class التى سوف ترسلها

لها نفس الاسم ونفس الـ package لدى العميل والخادم

وان تكون Serializable وان يكون كل كائن بداخلها Serializable

هذه الكلاس الـ ResultSet ليس Serializable

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

Software Developer
Mahmoudkelany.com


 

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