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

سؤال عن استدعاء كلاس DATABASE

مغلق
بدأه المستقيل في 8 يونيو 2007 · 21 رد · 1,365 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

لقد قمت بانشاء كلاس يرتبط مع الاكسس وهذا هو الكود

import java.sql.*;

	   public class ConnectDB
	   {
		   Connection conn;
		   Statement  stat;

		   public ConnectDB() throws ClassNotFoundException, SQLException
		   {
			Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

			conn=DriverManager.getConnection("jdbc:odbc:Driver="+
			   "{Microsoft Access Driver (*.mdb)}; DBQ=account.mdb");

			stat = conn.createStatement();
		   }

		   public void select(int _ID) throws SQLException
		   {
			   String str = "SELECT UserName FROM user WHERE ID="+_ID;
			stat.executeQuery(str);



		   }



		   public void update( String _UserName,int _ID) throws SQLException
		   {
			   // SQL> UPDATE students SET gpa=_gpa WHERE name='_name';
			   String str = "UPDATE user SET UserName='"+_UserName+"'WHERE ID="+_ID;

			   stat.executeUpdate(str);


		   }



		   public void close() throws SQLException
		   {
			   stat.close();
			   conn.close();
		   }
	   }

بحيث ان اسم ملف الداتا بيز هو account

ولقد قمت باستدعاء هذا الكلاس بكلاس اخراسمهLogin وعند القيام بعمل كمبايل للكلاس ال Login يعطي خطا

هذا جزء من الكود لكلاس الLogin

B1.setText("Login");
			   B1.addActionListener(new ActionListener() {
				   public void actionPerformed(ActionEvent e)
				   {
					   B1_actionPerformed(e);
	   ConnectDB db = new ConnectDB();
	   if (T1.getText().equals(db.select(5)) && T2.getText().equals(db.select(2)))
		   {setVisible(false);

	   }
			   else
						   {jLabel5.setText("Wrong User Name or Passowrd");}
				   }

			   });

وهذا هو الايرور

C:\javaAndAccess\Login.java:111: 'void' type not allowed here
	   if (T1.getText().equals(db.select(5)) && T2.getText().equals(db.select(2)))
										^
	   C:\javaAndAccess\Login.java:111: 'void' type not allowed here
	   if (T1.getText().equals(db.select(5)) && T2.getText().equals(db.select(2)))
																			 ^
	   2 errors

	   Tool completed with exit code 1
#2

الا يوجد حل لهذا الايرور؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

#3
								  ^
	   C:\javaAndAccess\Login.java:111: 'void' type not allowed here

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

if (T1.getText().equals(db.select(5)) && T2.getText().equals(db.select(2)))

أها إذاً المشكله من المثد select فهي بالتأكيد ترجع void ، الحل إجعلها ترجع String

#4

شكرا اخي عيسى على ردك

ولكن كيق استطيع ان اجعل الميثود select ترجع String ????

هذا هو كود ال select

public void select(int _ID) throws SQLException
		   {
			   String str = "SELECT UserName FROM user WHERE ID="+_ID;
			stat.executeQuery(str);



		   }
#5

ابحث عن ResultSet

#6

لقد قمت باضافة هذا السطر الى كود ال select

ResultSet rs = stat.executeQuery(str);

ولكن مالذي سوف اقوم بعمل return له ؟؟؟؟؟؟؟؟؟؟؟؟؟؟

#7

www.google.com

ResultSet tutorial ، ماتاخذ منك عشر دقائق وتفهم كيفية طريقته

#8

من المفترض ان يكون هذا الكود صحيح ولكنه يعطيني ايرور على جملة ال return

public void select(int _ID) throws SQLException
	{
	Statement stmt = conn.createStatement(
			   ResultSet.TYPE_SCROLL_SENSITIVE,
			   ResultSet.CONCUR_UPDATABLE);


	String str = "SELECT UserName FROM user WHERE ID="+_ID;
	stat.executeQuery(str);


	 ResultSet srs = stmt.executeQuery(str);


	String name = srs.getString("UserName");


	return name;
	}
#9

اجعل الداله ترجع String

#10
اقتباس
اجعل الداله ترجع String

هذا الذي اريده :D

ولكن كيف؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

تم تعديل هذه المشاركة بواسطة المستقيل في 8 يونيو 2007 في 15:49

#11

لقد قمت بتغيير كود ال select الى هذا لشكل

public static String select(int _ID) throws SQLException
			   {

	Connection conn;
	Statement  stat;


	conn=DriverManager.getConnection("jdbc:odbc:Driver="+
			"{Microsoft Access Driver (*.mdb)}; DBQ=programming.mdb");

	 stat = conn.createStatement();

	String str = "SELECT UserName FROM user WHERE ID="+_ID;
	stat.executeQuery(str);
	}

ولكن عند عمل كمبايل يعطي هذا الخطأ

C:\javaAndAccess\ConnectDB.java:34: missing return statement
	}
		^
1 error

Tool completed with exit code 1
#12

الا يوجد احد يعرف حل لهذه المشكلة ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

#13

اسبدل الميثود select بهذا الميثود ،،

	public void select(int _ID) throws SQLException{	
		String str = "SELECT UserName FROM user WHERE ID="+_ID;
		ResultSet r=stat.executeQuery(str);
		while(r.next()){
			return r.getString(1);  // column index
		} 
		return null;
	}
#14

لقد قمت بوضع الكود ولكن عند عمل كمبايل يعطي هذا الايرور

C:\javaAndAccess\ConnectDB.java:24: cannot return a value from method whose result type is void
				return r.getString(1);  // column index
									  ^
C:\javaAndAccess\ConnectDB.java:26: cannot return a value from method whose result type is void
			return null;
					   ^
2 errors

Tool completed with exit code 1
#15

آه..

يا اخي لو حاولت التفكير في الخطا الذي حصل منى من غير قصد لما احتجت الى اضافة هذا الرد ...

لحل هذا الخطا استبدل كلمة void بالكلمة String

#16

شكرا اخي

وانا ايضا لم انتبه لها

لقد قمت باستدعاء ال select من كلاس اخر وهذا هو الجزء الذي قمت باستدعاء الكلاس منه

B1.setText("Login");
		B1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{
				B1_actionPerformed(e);
ConnectDB db = new ConnectDB();
if (T1.getText().equals(db.select(1)) && T2.getText().equals(db.select(2)))


	{
		//db.update("rashi",5);
		setVisible(false);
		Main main = new Main();
		main.show();
		SerialToGsm GSM =new SerialToGsm("378");
		GSM.connect("COM1");
}
		else
					{jLabel5.setText("Wrong User Name or Passowrd");}
			}

		});

ولكن هذا الايرور يحدث عند عمل كمبايل

C:\javaAndAccess\Login.java:112: unreported exception java.lang.ClassNotFoundException; must be caught or declared to be thrown
ConnectDB db = new ConnectDB();
			   ^
C:\javaAndAccess\Login.java:113: unreported exception java.sql.SQLException; must be caught or declared to be thrown
if (T1.getText().equals(db.select(1)) && T2.getText().equals(db.select(2)))
								 ^
C:\javaAndAccess\Login.java:113: unreported exception java.sql.SQLException; must be caught or declared to be thrown
if (T1.getText().equals(db.select(1)) && T2.getText().equals(db.select(2)))
																	  ^
3 errors

Tool completed with exit code 1
#17

شكرا اخي

وانا ايضا لم انتبه لها

لقد قمت باستدعاء ال select من كلاس اخر وهذا هو الجزء الذي قمت باستدعاء الكلاس منه

B1.setText("Login");
		B1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e)
			{
				B1_actionPerformed(e);
ConnectDB db = new ConnectDB();
if (T1.getText().equals(db.select(1)) && T2.getText().equals(db.select(2)))


	{
		//db.update("rashi",5);
		setVisible(false);
		Main main = new Main();
		main.show();
		SerialToGsm GSM =new SerialToGsm("378");
		GSM.connect("COM1");
}
		else
					{jLabel5.setText("Wrong User Name or Passowrd");}
			}

		});

ولكن هذا الايرور يحدث عند عمل كمبايل

C:\javaAndAccess\Login.java:112: unreported exception java.lang.ClassNotFoundException; must be caught or declared to be thrown
ConnectDB db = new ConnectDB();
			   ^
C:\javaAndAccess\Login.java:113: unreported exception java.sql.SQLException; must be caught or declared to be thrown
if (T1.getText().equals(db.select(1)) && T2.getText().equals(db.select(2)))
								 ^
C:\javaAndAccess\Login.java:113: unreported exception java.sql.SQLException; must be caught or declared to be thrown
if (T1.getText().equals(db.select(1)) && T2.getText().equals(db.select(2)))
																	  ^
3 errors

Tool completed with exit code 1
#18

تأدكد من هذا الكلاس يرى الكلاس ConnectDB

ثانيا : جب ان تستخدم try

public String select(int _ID) throws SQLException{  
	try{  
		String str = "SELECT UserName FROM user WHERE ID="+_ID;
		ResultSet r=stat.executeQuery(str);
		while(r.next()){
				return r.getString(1);  // column index
		}
	}catch(SQLException e){
		e.printStackTrace();
	}
		return null;
}

11_03_06_12_48_57_1142110137Image(_66).jpg

#19

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

فهل يوجد حل؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

#20

إذهب على كل المثدز الموجوده وامسح أي try catch موجود ،

بعد ماتمسح كل الtry catch ، أكتب هذه الجمله :

throws Exception

لكل المثد الموجوده لديك ،

سيكون شكل كل المثد الموجوده لديك هكذا :

  void doSomething() throws Exception {

	}

حتى المين مثد اضف لها هذه الجمله ،

تم تعديل هذه المشاركة بواسطة عيسى عايد العنزي في 8 يونيو 2007 في 23:17

#21

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

	public String select(int _ID) throws Exception{

			String str = "SELECT UserName FROM user WHERE ID="+_ID;
			ResultSet r=stat.executeQuery(str);


return null;
}
#22

ارفق الكود هنا ....

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

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