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

عمل كلاسين يستدعي كل واحد منهم الآخر ...!

بدأه ماكسيموس في 1 مايو 2008 · 7 رد · 986 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

سؤال بسيط هل بالفعل القيام بعمل كلاسين كل واحد يستدعي الاخر ... اضرب لكم مثال .

مثلاً عندما نريد ان نربط اي كلاس باي قاعدة بيانات فانه من العروف تعريف connection و وضع URL لقاعدة البيانات فيه ... هذا ما سوف نقوم به

ولكن اذا كان هنالك كلاسين يستخدمان قاعدة بيانات واحده ... فهل من الممكن ان نضع تعريف connection و URL في كلاس ثالث ... ونقوم في الكلاسين السابقين بعملية import لهذا الكلاس

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

اي عندما نريد ان نربط اي كلاس في اي وقت واي مكان ما علينا الا سوى ان نقوم بعملية import ... انشاءنا SERVLET نقوم فقط بعملية import .. انشاءنا اي كلاس نقوم بـ import ... وهكذا

فهل هذا ممكن القيام بهذه الطريقة ...؟

جزاكم الله خير

تم تعديل هذه المشاركة بواسطة Jsp في 1 مايو 2008 في 02:04

#2

بالتأكيد ممكن

هل من محاولات نساعدك فيها

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#3

جزاك الله خير اخي علاء على هذا الاجابة وهي انه من الممكن القيام بهذا

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

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

اما عن محاولاتي فللاسف قد توقفت ... فليس لدي فكرة عن طريقة فعل هذا الامر ...

وهذا هو الكلاس الاول الذي اريد وضعه في مجلد الجافا ...

SQLConnection.Class

public class SQLConnection {

	public static void main (String[] args) {


 String url = "jdbc:sqlserver://localhost:1433;databaseName=vb;user=javaSQL;password=!@#sf#@!";
 Connection connction = null;
 Statement statement = null;
 ResultSet resultset = null;
 int row = 0;

  try {
  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  }
  catch(Exception e){

  JOptionPane.showMessageDialog(null,"Error One : "+e);
  }

  try {
  connction = DriverManager.getConnection(url);
  }
  catch(Exception e){

  JOptionPane.showMessageDialog(null,"Error Tow : "+e);
  }

  try {
  statement = connction.createStatement();
  }
  catch(Exception e){
  JOptionPane.showMessageDialog(null,"Error Three : "+e);
  }

}


}

وهذا الكلاس الاخر والذي اريد ان يكون فيه الاستدعاء وفي نفس الوقت الارسال ... وانظر الى أول الشيفرة

MainFramExample.Class

//import SQLConnection.Class;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;

public class MainFramExample extends JFrame {

	public MainFramExample() {
	 Container container = getContentPane();
	 container.setLayout(new FlowLayout());

	 TextArea Text3 = new TextArea();
	 Text3.setSize(200,200);
	 //pl.add(Text3);
  container.add(Text3);

  Button Button1 = new Button ("Insert");
  Button1.setSize(200,200);
  container.add(Button1);
  Button1.addActionListener(new ActionListener() {
	 public void actionPerformed (ActionEvent event){

	}
   }
  );

	}

  public static void main (String[] args) {
   MainFramExample MFE = new MainFramExample();
   MFE.setSize(400,250);
   MFE.setVisible(true);

  }
}

وهنا توفقت ... حيث اني اريد ان اضيف في الكلاس الاول ResultSet اقوم باجراء عمليات على قاعدة البيانات ... ولكن هنا كيف لي ان ارسل البيانات من الكلاس الثاني الى الكلاس الاول بالاضافة الى الاستدعاء...

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

وجزاك الله خير

#4

لا أدري هل فهمتك جيداً

أم أن هناك فجوات

بالطبع سنقوم لتقسيم الفئة الأولى إلى دوال تقوم بالعمليات التي نريدها على قاعدة البيانات

مثلاُ نريد البحث عن مستخدم معين

سأقوم ببناء دالة تقوم بهذه العملية

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

والدالة سترجع لي النتائج في ResultSet

بالطبع لن يكون هناك main

لذا سأضع عملية إنشاء الإتصال في دالة اسمها createConnection

في الفئة الثانية

سأقوم بإنئاء كائن من الفئة الأولى

وأنادي الدالة أنشئ إتصال ثم أنادي أي دوال أخرى أحتاجها

وعندما أنتهي سأغلق الإتصال عن طريق الدالة close

أي لبس أنا جاهز للتوضيح بإذن الله

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#5

جزاك الله خير اخي علاء

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

اريد ان اوضح فقط

المقصد من سؤالي وهو ان تكون الفئة الاولى وهي الربط في قاعدة البيانات في مجلد المجافا ... اي في هذا المسار C:\jdk1.6.0_02\jre\lib\ext

اي انها سوف تكون على شاكلة حزمة او ما شابهها ...

فمثلا عندما تقوم بجلب اي صنف من هذا المسار فما عليك الا سوى كتابة كلمة import ووضع اسم الصنف اللذي تريده مثل impoet java.sql.*;

وما سؤالي الا هكذا ... اي اننا في الفئة الثانية سوف نكتب في اول الشيفرة مثل هذا الامر او ما شابهه import ClassConnection.Class

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

اتمنى ان فكرتي او سؤال قد اتضح اكثر من السابق

#6

أنا أقوم بإنشاء ملفات الجار عن طريق ECLIPSE

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#7

في الحقيقة ليس لدي ادنى خلفية حول انشاء الملفات بهذه الصيغة

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

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

يمكن ان تاتي لدي فكرة انشاء هذه الملفات بدلاً من كتابة الاكواد ...

تحياتي لك

#8

أخي هناك أوامر من صن قد تقوم بالمهمة

لا أخفيك أني لم أتعامل معها مطلقاً

بإمكانك أن تبحث عنها

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

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