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

مساعده في برنامج Phonebook

بدأه Tigger_it في 19 يوليو 2009 · 22 رد · 1,139 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

عملت برنامج phone book مع داتا بيس من نوع mysql كل ماشي وزرابط ماعدا الكلاس هاد فيه مشكله ممكن حد يقولي وين المشكله

بطلع

NullPointerException


import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.DriverManager;
import java.sql.ResultSetMetaData;
import java.util.Vector;

public class DataBastOperation
{

private String username = "";
private String password = "";

Connection connection = null;
Statement statement = null;
ResultSet resultset = null;

private String DriverMange = "com.mysql.jdbc.Driver";
private String URl = "jdbc:mysql://localhost/Alaa";



public DataBastOperation()
{
try
{
Class.forName(DriverMange);
connection = DriverManager.getConnection(DriverMange,username,password);
statement = connection.createStatement();

}
catch(ClassNotFoundException e)
{

}
catch(SQLException e)
{

}



}

public Vector<Vector<Object>> QueryStatement(String sql)
{
Vector<Vector<Object>> rows = new Vector<Vector<Object>>();

try
{
resultset = statement.executeQuery(sql);
while(resultset.next())
{
Vector<Object> res = new Vector<Object>();
res.add(resultset.getInt(1));
res.add(resultset.getString(2));
res.add(resultset.getInt(3));
res.add(resultset.getInt(4));
res.add(resultset.getString(5));
res.add(resultset.getString(6));

rows.add(res);
}


}
catch(SQLException e)
{

}

return rows;


}

public Vector<String> getHeading()
{
Vector<String> head = new Vector<String>();
try
{
ResultSetMetaData res = resultset.getMetaData();
int count = res.getColumnCount();

for(int i = 0; i<count;i++)
{
head.add(res.getColumnName(i));

}


}
catch(SQLException e)
{
}

return head;

}


}
import java.sql.Connection;

ab66i830gh93.gif

i25sctz8qnls.jpg

#2

أولا لا تترك أبدا catch bloc فارغا لأنه إن وقع exception فإنه لا يفعل شيئا. على الأقل إجعله يكتب رسالة خطأ

لاحظت أن المتغير username يساوي فراغ، أظن أن هذا ما يسبب المشكل

#3

ما زبط غيرت مثل ما قلت الي

حطيت كلمة للمسخدم root وحكيت رساله خطا في ال catch

ما زبط كمان

ab66i830gh93.gif

i25sctz8qnls.jpg

#4

أخي من الصعب علينا فهم سبب المشكلة ,وذلك لان الكود في الأعلى لا يوضح تفاصيل سير العملية ....

لذلك نرجوا وضع الكود بشكل أكثر تفصيل , و الشيء الثاني نرجوا أن تعطينا رسالة Exception ..

#5

هاد الكلاس الرئيسى الي راح يتم فيه عرض البيانات

/**
 * @(#)PhoneBookFrame.java
 *
 *
 * @author 
 * @version 1.00 2009/7/18
 */
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import javax.swing.table.*;

public class PhoneBookFrame extends JFrame 
{
	private JInternalFrame FrameOne;
	private JButton InsertButton,UpdateButton,DeleteButton,ExitButton;
	private JFrame frame;
	private Action InsertAction,DeleteAction,UpdateAction,ExitAction;
	private JTable table;

	private String[] str = {"Name:","Phone:","Mobile","Email:","Address:"};


	ImageIcon a = new ImageIcon("Icon/browser.PNG");
	Toolkit kit = Toolkit.getDefaultToolkit();
	Dimension screenSize = kit.getScreenSize();
	int screenHeight = screenSize.height;
	int screenWidth = screenSize.width; 

	public PhoneBookFrame() 
	{
		frame = new JFrame("PhoneBook");
		setIconImage(a.getImage());
		JDesktopPane desk = new JDesktopPane();
		FrameOne = new JInternalFrame("PhoneBook",true,true,true,true);
		FrameOne.setToolTipText("This Frame To Control From PhoneBook");



		InsertAction = new AbstractAction()
		{
			public void actionPerformed(ActionEvent e)
			{

			}
		};

		InsertAction.putValue(Action.NAME,"Insert To PhoneBook");
		InsertAction.putValue(Action.SHORT_DESCRIPTION,"Insert To PhoneBook");
		InsertAction.putValue(Action.SMALL_ICON,new ImageIcon(getClass().getResource("Icon/apply.PNG")));
		InsertAction.putValue(Action.MNEMONIC_KEY,new Integer('I'));

		DeleteAction = new AbstractAction()
		{
			public void actionPerformed(ActionEvent e)
			{	
			}
		};

		 DeleteAction.putValue(Action.NAME,"Delete From PhoneBook");
		 DeleteAction.putValue(Action.SHORT_DESCRIPTION,"Delete From PhoneBook");
		 DeleteAction.putValue(Action.SMALL_ICON,new ImageIcon(getClass().getResource("Icon/apply.PNG")));
		 DeleteAction.putValue(Action.MNEMONIC_KEY,new Integer('D'));

		 UpdateAction = new AbstractAction()
		{
			public void actionPerformed(ActionEvent e)
			{	
			}
		};

		 UpdateAction.putValue(Action.NAME,"UpdateFrom PhoneBook");
		 UpdateAction.putValue(Action.SHORT_DESCRIPTION,"Update From PhoneBook");
		 UpdateAction.putValue(Action.SMALL_ICON,new ImageIcon(getClass().getResource("Icon/apply.PNG")));
		 UpdateAction.putValue(Action.MNEMONIC_KEY,new Integer('B'));

		  ExitAction = new AbstractAction()
		{
			public void actionPerformed(ActionEvent e)
			{
					System.exit(0);	
			}
		};

		 ExitAction.putValue(Action.NAME,"Exit");
		 ExitAction.putValue(Action.SHORT_DESCRIPTION,"Exit");
		 ExitAction.putValue(Action.SMALL_ICON,new ImageIcon(getClass().getResource("Icon/apply.PNG")));
		 ExitAction.putValue(Action.MNEMONIC_KEY,new Integer('E'));

		 DataBastOperation db = new DataBastOperation ();
		 String sql = "SELECT * FROM Phone";

		 table = new JTable(db.QueryStatement(sql),db.getHeading());
		 JTableHeader header = table.getTableHeader();

		 header.setBackground(Color.YELLOW);				 
		 JScrollPane scrollPane = new JScrollPane(table);
		 table.setPreferredScrollableViewportSize(new Dimension(500, 370));
		 FrameOne.getContentPane().add(scrollPane); 


		JToolBar Toolbar = new JToolBar();
		Toolbar.add(InsertAction);
		Toolbar.add(UpdateAction);
		Toolbar.add(DeleteAction);
		Toolbar.add(ExitAction);


		JPanel ButtonPanel = new JPanel();
		ImageIcon  t = new ImageIcon("Icon/browser.PNG");



		InsertButton = new JButton("Insert");
		InsertButton.setAction(InsertAction);
		InsertButton.setIcon(t);	


		UpdateButton = new JButton("Update");
		UpdateButton.setAction(UpdateAction);
		UpdateButton.setIcon(t);

		DeleteButton = new JButton("Delete");
		DeleteButton.setAction(DeleteAction);	
		DeleteButton.setIcon(t);

		ExitButton  = new JButton("Exit");
		ExitButton.setAction(ExitAction);
		ExitButton.setIcon(t);





		ButtonPanel.add(InsertButton);
		ButtonPanel.add(UpdateButton);	
		ButtonPanel.add(DeleteButton);
		ButtonPanel.add(ExitButton);


		desk.add(FrameOne);


		frame.getContentPane().add(Toolbar,BorderLayout.NORTH);  
		frame.getContentPane().add(desk,BorderLayout.CENTER);  
		frame.getContentPane().add(ButtonPanel,BorderLayout.SOUTH);

		frame.setSize(700,350);
		frame.setVisible(true);
		frame.setLocation(screenWidth/4, screenHeight/4);  


	}


}

وهاد الكلاس الثاني الخاص في عمليه الاتصال بقاعده البيانات ويوجد فيه ثلاث دوال داله الاتصال وداله الثانيه QueryStatement الي من خلالها راح انفذ الاستعلام الي راح يعرض جميع البيانات في الجدول ...

عملت اوبجكيت في كلاس PhoneBookFrame للكلاس DataBastOperation حتى اسطيع استخدام الدوال فيه

 DataBastOperation db = new DataBastOperation ();
		 String sql = "SELECT * FROM Phone";

		 table = new JTable(db.QueryStatement(sql),db.getHeading());

اين المشكله في كلاس DataBastOperation ؟؟

ab66i830gh93.gif

i25sctz8qnls.jpg

#6

اظن المشكلة أخي في الجملة التالية :

connection = DriverManager.getConnection(DriverMange,username,password);

يجب ان تكتب بدلا DriverMange >>>> URL لتصبح كالتالي :

connection = DriverManager.getConnection(URL,username,password);
#7

أعطنا رسالة الخطأ

#8

غيرت فيه وبرضو نفس المشكله ..

ab66i830gh93.gif

i25sctz8qnls.jpg

#9
herch كتب:

أعطنا رسالة الخطأ

#10

Not Connection ..java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

هاي هي رساله الخظا ..

ab66i830gh93.gif

i25sctz8qnls.jpg

#11

هل وضعت الDriver في الCLASSPATH

#12

انا حطيت الDriver في مجلد المشروع ... شو هو المسار تاعو اذا كان غلط ؟

ab66i830gh93.gif

i25sctz8qnls.jpg

#13

أنا أتكلم عن الCLASSPATH

كيف تقوم بتنفيذ البرنامج؟؟

#14

ما فهمت عليك كيف يعنى

ab66i830gh93.gif

i25sctz8qnls.jpg

#15

كيف تشغل البرنامج؟؟ هل تستعمل IDE مثلا Netbeans أو تشغله باستعمال الأمر java مثلا

java MyClass

#16

لا انا بشتغل علي JCreator ..

ab66i830gh93.gif

i25sctz8qnls.jpg

#17

أضف ملف jar اللي فيه الdriver إلى الCLASSPATH، هذا الرابط يبين الكيفية

هنـــــــــــا

لم أجربه لأني لا أستعمل jcreator

#18

حليت المشكله وهي كانت في driver وضعتو في المسار هاد C:\Program Files\Java\jdk1.6.0_13\jre\lib

شكرا اخ herch :)

ab66i830gh93.gif

i25sctz8qnls.jpg

#19

ليس هذا هو أنسب حل إذا كنت تنوي توزيع برنامجك

تم تعديل هذه المشاركة بواسطة herch في 20 يوليو 2009 في 01:32

#20

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

طيب شو هي انسب طريقه الي ممكن فيها اخي البرنامج شغال في اي مكان بحيث لا اضطر الي اضافه ملف الجار الخاص بالربط بين الجافا والmysql ..

ab66i830gh93.gif

i25sctz8qnls.jpg

#21

بالنسبة للDriver فلازم توزعه مع برنامجك، لكن ليس ضروري تضعه في المجلد bin، ضعه فقط في نفس المجلد وعند تنفيذ البرنامج تضيفه إلى الCLASSPATH

java -cp mysql-driver.jar;. YourProgram

تم تعديل هذه المشاركة بواسطة herch في 20 يوليو 2009 في 11:34

#22

ممكن مساعده بسيطه هلا بدي اعمل زر بعد ما احذف من الجدول هاد الزر بعمل refresh حاولت اعملها بس ما عرفت .. اذا في حد عندو الفكره يساعدنى فيها ..

ab66i830gh93.gif

i25sctz8qnls.jpg

#23

ما حد عندو فكرة ؟

ab66i830gh93.gif

i25sctz8qnls.jpg

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