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

سؤال: لا استطيع نقل المعلومات

مغلق
بدأه صلاح الثبيتي في 30 يوليو 2003 · 11 رد · 1,081 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ..

عندي مشكله مع ملفين جافا ،،

الاول ملف يتعامل مع الـ GUI و بعدين ينقل المعلومات الى ملف ثاني يتعامل مع الـ database

بالبداية،، انشأت هذا السطر بالملف الاول :

//create objects from another classes for using them in the ActionListener
private addBooksConnection connection;
//for creating an array of string to store the data
private String[] data;
//for setting availble option to true
private boolean availble = true;

و بعدين كتبت ميثود معين للتعامل مع المعلومات:

//for checking the information from the text field
public boolean isCorrect() {
	for(int i = 0; i < 8; i++) {
		if(!informationTextField.getText().equals("")) {
			data = new String[8];
			data = informationTextField.getText();
		}
		else return false;
	}
	return true;
}

و بعدين كتبت بنفس الملف الاول:

insertInformationButton.addActionListener(new ActionListener() {
	public void actionPerformed(ActionEvent ae) {
		if(isCorrect()) {
			connection = new addBooksConnection();
			connection.toConnection("INSERT INTO Books (Subject,Title,Author,"+
			"Publisher,Copyright,Edition,Pages,ISBN,Availble) VALUES ('"+
			data[0] + "','" + data[1] + "','" + data[2] + "','"+ 
			data[3] + "', " + data[4] + ", "  + data[5] + ", " +
			data[6] + ", '" + data[7] + "', " + availble+ ")");

			//for setting the JTextField[] text to null
			for(int i = 0; i < informationTextField.length; i++) {
				informationTextField.setText(null);
			}
		}
		else {
JOptionPane.showMessageDialog(null,"Please, complete the information","Missing Information",JOptionPane.WARNING_MESSAGE);
		}
	}
});

و كتبت بالملف الثاني هذا الكود:

//import the packages for using the classes in them into the program
import java.sql.*;

public class addBooksConnection {
	/***************************************************************************
	 ***      declaration of the private variables used in the program       ***
	 ***************************************************************************/

	//for setting the connection and statement
	private Connection connection = null;
	private Statement statement   = null;

	public void toConnection(String query) {
		try {
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		}
		catch(ClassNotFoundException ea) {
			System.out.println(ea.toString());
		}
		catch(Exception e) {
			System.out.println(e.toString());
		}
		/***************************************************************
		 * for making the connection,creating the statement and update *
		 * the table in the database. After that,closing the statmenet *
		 * and connection. There is catch block SQLException for error *
		 ***************************************************************/
		try {
			connection = DriverManager.getConnection("jdbc:odbc:JLibrary");
			statement  = connection.createStatement();
			statement.executeUpdate(query);
			statement.close();
			connection.close();
		}
		catch(SQLException SQLe) {
			System.out.println(SQLe.toString());
		}
	}
}

المشكله الوحيده هي ان جميع الخانات بقاعدة البيانات تاخذ null ماعدا اخر عمودين،، فتطلع المعلومات مثل ما ادخلت من قبل المستخدم و البقيه تكون null !!

احد يعرف وين المشكله !!!

انا مستغرب ان بعض المعلومات تدخل لقاعدة البيانات و البعض الاخر لا يدخل !!

#2

ههههههههههههههههههههههههههه

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

public boolean isCorrect() {
    for(int i = 0; i :P:p


أعتقد الحل كذا  :
[php]
public boolean isCorrect() {

data = new String[8];    

for(int i = 0; i < 8; i++) {

if(!informationTextField.getText().equals("")) {

            data = informationTextField.getText();
}
        else return false;
    }
    return true;
}

وش رايك فيني ؟؟؟؟؟

#3

2pac: خليني اشوفك و بعدين نتفاهم

:P

ما ادري كيف فاتتني النقطه هذي :( (اكيد كنت سهران و مواصل :D)

#4
searchButton.addActionListener(new ActionListener() {
	public void actionPerformed(ActionEvent ae) {
		//for checking if there is a missing information
		if(isCorrect()) {
			//Thread runner = new Thread() {
				//public void run() {
					listSearching = new listSearchBooks("SELECT Subject,Title,Author,"+
					"Publisher,Copyright,Edition,Pages,ISBN,Availble FROM Books"+
					" WHERE "+ data[0] + " LIKE " + data[1]);
					getParent().add(listSearching);
					try {
						listSearching.setSelected(true);
					}
					catch(java.beans.PropertyVetoException e) {}
				//}
			//};
			//runner.start();
			dispose();
		}
	}
});

عندي مشكله بسيطه و هي .. اذا استخدمت الـ Thread بالـ ActionListener .. يطلع عندي خطأ Exception .. NullPointer

و اذا استخدمت الكود بدون Thread .. يشتغل بشكل صحيح !!

كيف اقدر استخدم الكود بالـ Thread ؟؟

#6

NullPointerException occurs if you try to call a method on an object that has not been assigned to,for example ,if you did not assign a value to listSearching and then call setSelected,the eexception will occur.

check if IsCorrect,data, and listSearching have a value

#7

مدني: علماً اني ما فهمت وش تقول :D لكن من طول و عرض الجمله و بعد ما قريتها 3 مرات .. كأنك تقول اني ما حطيت قيم للاوبجكت :rolleyes:

انا اذا استخدمت الكود بدون Thread .. يشتغل بشكل طبيعي و بدون اي مشاكل .. لكن اذا كتبت نفس الكود + استخدام الـ Thread .. يطلع عندي الخطا السابق !!!

ان شاء الله المره القادمه نفهم بعض من اول موضوع و رد :D

#8

الكلام اللي قاله مدني (عام)

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

يعني مدني يفترض أنه الخطأ في listSearching لكن أنت لو عطيتنا الـ StackTrace كان عرفنا وش السالفة

#9

java.lang.NullPointerException at searchBooks$2.run(searchBooks.java:136)

هذا هو اللي طلع لي...

و السطر 136 هو هذا :

getParent().add(listSearching);
#11

email me you code

هذا الموضوع مغلق.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…