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

موضوع مفتوح عن قاعدة بيانات Mysql + Java

بدأه زائر في 30 يونيو 2008 · 27 رد · 3,780 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

:wub:

السلام عليكم

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

لذلك نريد ان نطوي قصة MySQL مع الجافا

بالمشاريع والاكواد

الكل يكتب مايريده والجميع يتشارك في حلها

خلال اسبوع اذا ماتقدمنا بالموضوع راح اغلقه واحذفه :D

فا بليز رحبوا فيني :lol:

والاعضاء الفاضين يجون هونيه :P

#2

كل عام وانتم بخير

فعلا انتهينا اخيرا هففففففففففففففففففف

:resentful:

mysql && apache هذا كل ما ارعفه عن mysql وكيف تنتج ... نعم لقد قمت بمشاريع على mysql وبال php

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

ونتقوم بالاستدعء من خلال الــ php ولكن اذا المسالة java :evil:

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

الله معك ..

#3

لحظة لحظة ..

مارق على راسي هالعلم والبلد فوق البحر وتحت الماء واني اغرق

الست عيسى Xline :S

ما هذه الموضى الدارجة في تغير الاسامي .. سوف اغير اسمي انا ايضا ..لكن ما ذا اسميه ...

يبدو انني حتى في اختيار الاسامي فاشل ... :D

الله معك

#4

اتمنى ان يشرح لنا احد الاعضاء طريقة عمل قاعدة بيانات ب Oracle ثم ربطها ببرنامج Java عن طريق JDBC

تم تعديل هذه المشاركة بواسطة مجلـد جديـد في 1 يوليو 2008 في 13:39

#5

لم افهم هل اضع مشاريعي التي قمت بعملها بالجافا وخاصة مع قاعدة البيانات MYSQL

ام الاقدام على فكرة مشروع جديد ومن ثم وضعها ومن ثم الاخذ في عملية كتابة الاكواد سواء مع MYSQL او غيرها

طبعاً باستخدام الحالتين JDBC او ODBC .

#6

اهلاً

قدموا اي شئ بحوزتكم

ان كانت اكواد ، مشاكل ، تساؤل

اي شئ لديكم .. لكن اتمنى ان يكون هدفه واضح ومحدد يعني مش مشروع كامل

الاخ مجلد جديد الموضوع خاص ب mySQL

#7

في أي مشروع أنا استخدم هذا الصف للاتصال مع قاعدة البيانات : (الصف يحقق singleton ) لضمان اتصال وحيد لكل التطبيق , لأن كل اتصال هو resource consuming

package com.myapp.dbLogic;

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.*; 

public class MysqlConnection {

	private Connection connection = null;

	public static MysqlCo
nnection _mysqlConnection = null;




	private MysqlConnection() throws SQLException, Exception
	{
		Class.forName("com.mysql.jdbc.Driver").newInstance();
		connection = DriverManager.getConnection("jdbc:mysql://localhost/library?" + 
							   "user=root&password=password");
		connection.setAutoCommit(true);
	}

	public static MysqlConnection getInstance() throws SQLException, Exception
	{
		if (_mysqlConnection == null)
		{
			_mysqlConnection = new MysqlConnection();
		}
		return _mysqlConnection;
	}


	public int executeDML(String sql) throws SQLException {
		int affectedColumns = -1;

		Statement stmt = connection.createStatement();
		affectedColumns = stmt.executeUpdate(sql);

		return affectedColumns;

	}

	public ResultSet executeQuery(String selectSQL) throws SQLException{
		ResultSet rs = null;
		Statement stmt = connection.createStatement();
		rs=stmt.executeQuery(selectSQL);
		return rs;
	}

	public void disConnect() throws SQLException{
		connection.close();
	}

}

بالتالي منطق التطبيق , بفرض لدينا صف User يقوم بعمل Login إلىحسابه :

package com.myapp.bussiness;

import java.util.*;
import java.sql.ResultSet;

import com.myapp.dbLogic.*;

public class User
{
  private int id;
  private String name;
  private String password;
  private String firstName;
  private String lastName;
  private String country;


  public void setId(int id)
  {
	this.id = id;
  }


  public int getId()
  {
	return id;
  }


  public void setName(String name)
  {
	this.name = name;
  }


  public String getName()
  {
	return name;
  }


  public void setPassword(String password)
  {
	this.password = password;
  }


  public String getPassword()
  {
	return password;
  }


  public void setFirstName(String firstName)
  {
	this.firstName = firstName;
  }


  public String getFirstName()
  {
	return firstName;
  }


  public void setLastName(String lastName)
  {
	this.lastName = lastName;
  }


  public String getLastName()
  {
	return lastName;
  }


  public void setCountry(String country)
  {
	this.country = country;
  }


  public String getCountry()
  {
	return country;
  }

  public User()
  {
  }

  public User(int id)
  {
	this.id = id;
  }

  public boolean logIn() throws Exception
  {
	  String selectStr = String.format("SELECT USERID, USERNAME, UPASSWORD, FIRSTNAME, LASTNAME, COUNTRY FROM USERS WHERE USERNAME LIKE '%s' AND UPASSWORD LIKE '%s'", this.name, this.password);
	  MysqlConnection conn = MysqlConnection.getInstance();
	  ResultSet rs = conn.executeQuery(selectStr);

	  return rs.next()? true: false;

  }
  public ArrayList<User> SelectAll() throws Exception
  {
		ArrayList<User> userList = new ArrayList<User>();
		String selectStr = "SELECT USERID, USERNAME, UPASSWORD, FIRSTNAME, LASTNAME, COUNTRY FROM USERS";

		MysqlConnection conn = MysqlConnection.getInstance();
		ResultSet resultSet = conn.executeQuery(selectStr);
		while(resultSet.next())
		{
			User newuser = new User();
			newuser.id = resultSet.getInt("USERID");
			newuser.name = resultSet.getString("USERNAME");
			newuser.password = resultSet.getString("UPASSWORD");
			newuser.firstName = resultSet.getString("FirstName");
			newuser.lastName = resultSet.getString("LASTNAME");
			newuser.country = resultSet.getString("COUNTRY");
			userList.add(newuser);
		}
		resultSet.close();

		return userList;
  }

  public void CreateNew() throws Exception
  {
		String insert = String.format("INSERT INTO USERS ( USERNAME, UPASSWORD, FIRSTNAME, LASTNAME, COUNTRY) VALUES (%s,'%s','%s','%s','%s')", this.name, this.password, this.firstName, this.lastName, this.country);
		MysqlConnection conn = MysqlConnection.getInstance();
		conn.executeDML(insert);
  }

  public void Update() throws Exception
  {
	String update = String.format("UPDATE USERS SET USERNAME = '%s', UPASSWORD = '%s', FIRSTNAME = '%s', LASTNAME = '%s', COUNTRY = '%s' WHERE USERID = %s ",  this.name, this.password, this.firstName, this.lastName, this.country,this.id);
	MysqlConnection conn = MysqlConnection.getInstance();
	conn.executeDML(update);
  }

  public void Delete() throws Exception
  {
		String delete = String.format("DELETE FROM USERS WHERE USERID = %s",this.id);
		MysqlConnection conn = MysqlConnection.getInstance();
		conn.executeDML(delete);
  }

  }

في النهاية طبقة الواجهات (يمكن أن تكون swing أو صفحات JSP ) لا يعلم شئ عن قاعدة البيانات

كل ماعليك هو استيراد الصف User

import com.myapp.bussiness.*;

و استخدم الميثود كما تشاء

أنا أجدها طريقة رائعة ... ما رأيكم .. هل يوجد مشاكل ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

تم تعديل هذه المشاركة بواسطة malek_sa في 2 يوليو 2008 في 13:46

SCJP 5.0

#8

طريقه رائعه اخي malek

انا عامل نفس الحكايه لكن بدون سنقلتون ومفصل في عمليات dml

#9

مشاركة طيبة أخي مالك أنا أيضا أستخدم تقريبا نفس الأسلوب

#10

معليش استحملوني على كم سؤال


"user=root&password=password");
connection = DriverManager.getConnection("jdbc:mysql://localhost/library?" +

حسب ما فهمت jdbc:mysql://localhost/library

هل library اسم الداتا بيس ؟؟

طيب انا لما افتح داتا بيس mysql بالاباتشي بيطلع لي حتى وانا عم اتصفح الداتا بيس ع جهازي هذا الرابط دوم http://localhost/phpMyAdmin

يمكن لانو النسخة phpMyAdmin2.9.2

مدري ..او يمكن هذا تفكير مو منطقي مني لانو ما دخل الرابط ...اوكي

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

في اسئلة كتير ..بس حاليا هذا المتواجد :P

الله معكم..

#11

انا مبتدئ في موضوع برامج الداتا بيز برمجه الجافا و MySql انا عملت برنامج بسيط تلات خانات الرقم و الاسم و العنوان وفيه 4 زراير أمر واحد لعرض البيانات وواحد للإضافة وواحد للحذف و الاخير للتعديل

انا عاوز مثلا اعمل كومبوبكس لعرض الرقم والرقم اللي اختاره يتم عرضه بياناته

انا ما عرفت ارفق قاعدة البيانات لأني جديد على MySql ارجو المساعده

ملاحظة البرنامج هو تطبيق لمثال من كتاب wiley & sons - mysql and java developer's guide ياريت تحملوا البرنامج وتكتبوا تعليقاتكوا عليه

وشكرا

Acc.rar

#12

شادو

library اسم الداتا بيز

phpMyadmin هو أداة بي اتش بي لإدارة قواعد بيانات ماي سقول

ماعرف عنها شئ ، لكن سؤالك تستطيع توجيهه لقسم البي اتش بي يفيدونك أكثر

سواءاً بphpMyadmin او بالجافا كل التعليمات ستكون متحققه بمعنى تستطيع بناء جداول وغيرها بكليهما

وتستطيع التاكد من استخدام الكونسول والدخول على ماي سقول وتشوف الجداول موجوده بدون اي وسيط آخر

#13
اقتباس
وتستطيع التاكد من استخدام الكونسول والدخول على ماي سقول وتشوف الجداول موجوده بدون اي وسيط آخر

:hmm:

انا حلحق على الدوس كمان عشان استكشف الجداول ... :wacko:

اقتباس
phpMyadmin هو أداة بي اتش بي لإدارة قواعد بيانات ماي سقول

فعلا انا كنت اعمل على نسخة غير كانت وصلة مباشرة ...على ما اذكر

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

هي


mysql_select_db("DB");
mysql_connect("localhost","root","1");

اعذروني على طرح اكواد من لغات اخرا لكن انا اعاني من مشكلة التداخل بين اللغات واريد ان استفد من هذه المشكلة في فهم لغة على حساب لغة

لكن الفرق في java اننا وضعنا رابط للوصول الى db بالاضافة الى اسم مستخدم db وكلمة المرور

السبب في مقدمتي المملة ..سؤالي التالي ....هل هناك طرق للتفنن باستدعاء قاعدة بيانات mysql بالجافا

الله معكم..

#14
اقتباس
انا حلحق على الدوس كمان عشان استكشف الجداول ...

فقط عشان يطمئن قلبك

اقتباس
فعلا انا كنت اعمل على نسخة غير كانت وصلة مباشرة ...على ما اذكر

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

لا طبعاً ، هناك أكثر من طريقه

لكن المنطق واحد ، ( تحديد مكان الدرايفر - طريقة الاتصال )

مثلاً تقدر عن طريق Properties , DataSource class

هذا مثال عن Properties

		  System.setProperty("user","root");
		   System.setProperty("password","root");

		  String user=System.getProperty("user");
		  String pass=System.getProperty("password");
				 Class.forName("com.mysql.jdbc.Driver");
	  con = DriverManager.getConnection("jdbc:mysql://localhost/test",user,pass);

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

لكن الفرق في java اننا وضعنا رابط للوصول الى db بالاضافة الى اسم مستخدم db وكلمة المرور

لم نضع رابط الوصول أنت فقط تقول بأنها في الجهاز الحالي مثل الphp عنوان الداتا بيز فيزيائياً غير معروف

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

#15

خي mamoud اسف على التاخير

حقيقة لم ارى كودك ولكن مشكلتك(حسب فهمي) بسيطه ،

اضف JComboBox للفريم

وقت مااختار المستخدم احد العناصر

خذ القيمه JComboBox.getSelectedItem

وابحث عنه في قاعدة البيانات

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

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import javax.swing.*;
class GUI extends JFrame {
	JTextField id,name,address;
	JButton save;
	static Connection con=null;
	static Statement st=null;
	public GUI(){
		super("JDBC test ..");
		id=new JTextField(8);
		name=new JTextField(20);
		address=new JTextField(30);
		save=new JButton("save");
		add(id);
		add(name);
		add(address);
		add(save);
		save.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				try {
					String sql="INSERT INTO student VALUES ('"+
							id.getText().trim()+"','"+name.getText().trim()+
							"','"+address.getText().trim()+"')";
					st.executeUpdate(sql);
					JOptionPane.showMessageDialog(null,"Successfully Saved ! ");
				} catch (Exception ex) {
					ex.printStackTrace();
				}
			}
		});
		setLayout(new FlowLayout());
		setSize(400,300);
		setVisible(true);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	}
	public static void connectToDB(){

		 try{
	   Class.forName("com.mysql.jdbc.Driver");
	  con = DriverManager.getConnection("jdbc:mysql://localhost/test","root","root");	 
		 st = con.createStatement();  


	}
	catch (Exception e){
	  e.printStackTrace();
	}

	}
	public static void main(String args[]){
connectToDB();
new GUI();
}

}
#16

باقي اسئله ولا نحول على أوراكل ؟

#17

طيب وايه مدى استخدامكم لل ORMs ؟

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#18

احمد يوسف

ممكن توضح اكثر اخوي .؟

#19

اقصد Object Relational Mapping

http://en.wikipedia.org/wiki/Object-relational_mapping

بصورة مختصرة: بيمثل كل جدول فى قاعدة بالبيانات بكلاس وكل صف فيه بيعبر عن اوبجكت (التعامل مع الأوبجكتس ابسط كتير من التعامل مع SQL) ولا إيه ؟

(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#20

السلام عليكم

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

حبيت فقط أضع طريقة الاتصال ب قاعدة البيانات بشكل remotely بمعنى انك تتصل بقاعدة بياناتك من اي مكان

أولاً لنفرض انك ان الروت في قاعدة البيانات

ادخل قاعدة البيانات بالروت واكتب التالي :

grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;

التفسير :

اعط كل الصلاحيات grant all privileges

على قاعدة البيانات هذه * كل قواعد البيانات و الجداول * كل الجداول التابعه لقاعدة البيانات

للمستخدم الروت to root

في المكان @

أي هوست خارجي %

بالباسوورد identified by

ماي سقول by default لاتسمح لك بالاتصال من خارج الجهاز ك سكيورتي اشيو

الآن اذهب الى الملف my.ini

ابحث عن خاصيتين bind address & skip-networking

واعمل كومنت عليها بمعنى انك تمسحها .. ( أنا لم تظهر لي هذه الخاصيتين اعتقد لأنني فعلت ال remote connection من ال configuration wizard )

الآن قاعدة البيانات تقبل الاتصال الخارجي بنفس الصلاحيات المعطاه

كل ماعليك اخذ الاي بي للجهاز الموجود عليه قاعدة البيانات ( اسهل طريقه www.whatismyipaddress.com )

الآن في اي جهاز آخر من على الانترنت اتصل باستخدام JDBC

con=DiverManager.getConnection("jdbc:mysql://databaseIP/databaseName","root","rootPass");

وبكذا تكون اتصلت بشكل remotely لقاعدة البيانات mySQL

تم تعديل هذه المشاركة بواسطة Eisa Ayed في 29 يوليو 2008 في 09:56 — السبب: نسيت اقول شي

#21

any further questions ?

#22

هيه عيسى عربي

بالمناسبة أريد أن أفهم

هل mysql تحتوي على علاقات relations أم لا؟

ولماذا لا أجد الكثير يستخدم هذه العلاقات إن وجدت؟

تحياتي

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

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

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

728x90.png

#23

علاء وش تقصد ب علاقات ؟

هل تقصد many to many , many to one ؟

#24

عندما يكون لديك جدول سلع وجدول مشترين

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

بمعنى أنه لكي يرتبط عنصر من جدول المشترين مع عنصر من جدول السلع

يجب أن يشتري هذا العنصر هذه السلعة

هذا ما يسمى بالعلاقة

many to many , many to one هذه أنواع العلاقات

تحياتي

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

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

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

728x90.png

#25

اوه

علاء لم ارى DBMS في حياتي لاتطبق العلاقات

لأنها ببساطه قلب قاعدة البيانات

والطريقه موحده لجميع ال DBMS

مثلاً في علاقة ميني تو ميني

تنشئ جدول جديد يحتوي جميع ال PKs

ابحث في قوقل عن ER diagrams

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

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