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

شرح : كيفية الاتصال بقاعدة بيانات أكسيس وإضافة بيانات اليها

بدأه rohaili في 9 يونيو 2009 · 11 رد · 7,306 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أضف الفئة أو الصنف التالي إلى مشروعك :

package rohailidb;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class userdb {
	public static int insert(String s1, String s2, String s3){

		//الاتصال بقاعدة بيانات mdb وتحديد موقعها
		String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};" +
				"Dbq=d:\\rohailidb\\rohaili.mdb";

		//إنشاء كائن Connection و PreparedStatement
		Connection conn = null;
		PreparedStatement ps = null;

		try {
			//الاتصال بقاعدة البيانات
			conn = DriverManager.getConnection(url);

			//اضافة بيانات الى الجدول table1 في الحقل c1 و c2 و c3
			String query = "INSERT INTO table1 (c1, c2, c3)" +
				 "VALUES (?, ?, ?)";

			ps = conn.prepareStatement(query);
			//تمرير البيانات المراد اضافتها الى الحقول السابق ذكرها بالترتيب
			ps.setString(1, s1);
			ps.setString(2, s2);
			ps.setString(3, s3);

			return ps.executeUpdate();
		}
		catch (SQLException ex) {
			Logger.getLogger(userdb.class.getName()).log(Level.SEVERE, null, ex);
			return 0;
		}
		finally{
			try {
				//اغلاق ps و conn (الاتصال)
				ps.close();
				conn.close();
			}
			catch (SQLException ex) {
				Logger.getLogger(userdb.class.getName()).log(Level.SEVERE, null, ex);
			}
		}
	}
}

أضف الأمر التالي إلى أي مكان لإستدعاء الأمر insert وتمرير البيانات المراد إضافتها له ولا تنس تغيير البيانات في كل مرة تنفذ فيها البرنامج والا سوف تحصل على خطأ ، حيث لا يمكنك اضافة بينات موجودة .

int row = userdb.insert("r", "rr", "rrr");

حيث row هي عدد الصفوف التي أضيفت الى الجدول

ويمكن إختصار الأمر السابق إلى

userdb.insert("r", "rr", "rrr");

مرفق مع الموضوع المشروع كاملا بهيئة netbeans وهو الملف rohailidb.zip

مرفق مع الموضوع قاعدة البيانات وهي موجودة داخل المجلد db.zip ، بعد فك الضغط عن الملف db.zip ضعه في القسم d بحيث يكون مسار قاعدة البيانات كالتالي

d:\db\rohaili.mdb

rohailidb.zip

db.zip

تم تعديل هذه المشاركة بواسطة علاء الصالحي في 9 يونيو 2009 في 17:36

300_130.gif

#2

الله يعطيك العافية

تحياتي

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

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

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

728x90.png

#3

انا احترم اي شخص ياخذ ليعطي ضعف ما اخذ

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

ام انها ابسط مما اتصور ...

بالنسبة للدرايفر ..من اين وما هي ام هي موجودة مسبقا ..

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

الله يعطيك العافية

بالتوفيق

الله معك

#4

جزاك الله خيرا أخي shado .

أعتقد أنها أبسط مما تتصور ، ولا يفضل استخدامها في إنشاء المواقع ، والأفضل منها هو mysql .

التعريفات (drivers) موجودة مسبقا مع jdk ، والاختلاف في رقم الإصدار ، فمثلا الإصدار jdbc 4.0 يأتي مع jdk 1.6 ، والجديد في هذا الإصدار أنه لا داعي لتحميل التعريف باستخدام الجملة Class.forName .

وإستخدامي لقاعدة بيانات access الآن أمر لا بد منه ، لأن البيانات المطلوب التعامل معها في مشروعي موجودة في قاعدة بيانات access .

تم تعديل هذه المشاركة بواسطة rohaili في 10 يونيو 2009 في 09:15

300_130.gif

#5

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

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

الدالة التالية اضافة للفئةuserdb ويمكن التعديل عليها بحيث تعود بكائن يحتوي على جميع البيانات الخاصة بالسجل ( الصف المحدد )

//هذه الدالة تعود بقيمة الحقل c2 بدلالة الحقل c1
	public static String selectuser (String s){

		String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};" +
				"Dbq=d:\\rohailidb\\rohaili.mdb";

		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;

		try {
			conn = DriverManager.getConnection(url);

			//اختيار السجل ( الصف ) الذي  تكون قيمة الحقل c1 فيه تساوي ؟
			String query = "SELECT * FROM table1 " +
				 "WHERE c1 = ?";

			ps = conn.prepareStatement(query);
			ps.setString(1, s);

			rs = ps.executeQuery();

			//وضع كل بيانات السجل (الصف) في الكائن rs
			rs.next();

			//اعادة قيمة الحقل c2 من السجل المحدد سابقا
			return rs.getString("c2");
		}
		catch (SQLException ex) {
			Logger.getLogger(userdb.class.getName()).log(Level.SEVERE, null, ex);

			//اعادة نص لا يتكون من أي حرف إذا لم تكن القيمة الممرة للحقل c1 موجودة
			return "";
		}
		finally{
			try {
				rs.close();
				ps.close();
				conn.close();
			}
			catch (SQLException ex) {
				Logger.getLogger(userdb.class.getName()).log(Level.SEVERE, null, ex);
			}
		}
	}

300_130.gif

#6

السلام عليكم

اخ/ rohaili

نفذت البرنامج والخطوات بعدين طلعلي هذا الخطأ

22/06/2009 11:07:20 ص rohailidb.userdb insert

SEVERE: null

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]‏‏خطأ عام ‏‏غير قادر على فتح مفتاح التسجيل 'Temporary (volatile) Jet DSN for process 0xd74 Thread 0xc6c DBC 0x3753e4 Jet'.

at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)

at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)

at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3073)

at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)

at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)

مشاري IT كتب:
السلام عليكم

اخ/ rohaili

نفذت البرنامج والخطوات بعدين طلعلي هذا الخطأ

22/06/2009 11:07:20 ص rohailidb.userdb insert

SEVERE: null

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]‏‏خطأ عام ‏‏غير قادر على فتح مفتاح التسجيل 'Temporary (volatile) Jet DSN for process 0xd74 Thread 0xc6c DBC 0x3753e4 Jet'.

at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)

at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)

at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3073)

at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)

at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)

أرجو الرد !!

#7

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

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

إذا كنت قد نفذت المشروع المرفق بهيئة netbeans كاملا وهو الملف المسمى rohailidb.zip بعد فك الضغط بدون أي تعديل ، فيظهر أن الخطأ هو عدم وجود قاعدة البيانات في المسار الصحيح ، أي أن القاعدة rohaili.mdb يجب أن تكون في المجلد db والمجلد موجود في القسم d أي أن المسار سوف يكون كالتالي :

d:\db\rohaili.mdb

حل آخر بإختيار اسم dsn لقاعدة البيانات : إختر إبدأ > لوحة التحكم > أدوات إدارية > مصادر البيانات odbc > النظام dsn > إضافة > microsoft access driver (*.mdb)

في اسم مصدر البيانات اكتب أي اسم مثلا rohaili

ثم إضغط على تحديد واختر قاعدة البيانات rohaili.mdb

بعد ذلك غير السطر التالي

String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};" +
				"Dbq=d:\\rohailidb\\rohaili.mdb";

إلى

String url = "jdbc:odbc:rohaili";

rohaili هو اسم مصدر البيانات الذي اخترناه سابقا .

بالتوفيق .

300_130.gif

#8
rohaili كتب:
بســم الله الـرحمــن الرحيــم

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

إذا كنت قد نفذت المشروع المرفق بهيئة netbeans كاملا وهو الملف المسمى rohailidb.zip بعد فك الضغط بدون أي تعديل ، فيظهر أن الخطأ هو عدم وجود قاعدة البيانات في المسار الصحيح ، أي أن القاعدة rohaili.mdb يجب أن تكون في المجلد db والمجلد موجود في القسم d أي أن المسار سوف يكون كالتالي :

d:\db\rohaili.mdb

حل آخر بإختيار اسم dsn لقاعدة البيانات : إختر إبدأ > لوحة التحكم > أدوات إدارية > مصادر البيانات odbc > النظام dsn > إضافة > microsoft access driver (*.mdb)

في اسم مصدر البيانات اكتب أي اسم مثلا rohaili

ثم إضغط على تحديد واختر قاعدة البيانات rohaili.mdb

بعد ذلك غير السطر التالي

String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};" +
				 "Dbq=d:\\rohailidb\\rohaili.mdb";

إلى

String url = "jdbc:odbc:rohaili";

rohaili هو اسم مصدر البيانات الذي اخترناه سابقا .

بالتوفيق .

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

معليش اخ rohaili

بس انا عندي سؤال

البرنامج هذا اسويله رن في النت بينز ولا فين

شكراً لك اخي الكريم

#9

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

أكيد في النت بينز ،

بالتوفيق .

300_130.gif

#10

السلام عليكــم ورحمـة الله وبركاتــه ،،كيف حالك إن شاء الله دائمــاً بخير ؟

أخ/rohaili

انا متأسف على الاسئلة الكثيرة

انا نفذت الخطوات الاخيرة اللي قلتلي عليها وما زبط البرنامج

الا الان يقول البرنامج

Jun 25, 2009 4:16:12 AM rohailidb.userdb insert

SEVERE: null

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Could not find file '(unknown)'.

at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6957)

at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7114)

at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(JdbcOdbc.java:3073)

at sun.jdbc.odbc.JdbcOdbcConnection.initialize(JdbcOdbcConnection.java:323)

at sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:174)

at java.sql.DriverManager.getConnection(DriverManager.java:582)

at java.sql.DriverManager.getConnection(DriverManager.java:207)

at rohailidb.userdb.insert(userdb.java:23)

at rohailidb.RohailidbView.<init>(RohailidbView.java:30)

at rohailidb.RohailidbApp.startup(RohailidbApp.java:19)

at org.jdesktop.application.Application$1.run(Application.java:171)

at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273

)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173

)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

Jun 25, 2009 4:16:12 AM org.jdesktop.application.Application$1 run

SEVERE: Application class rohailidb.RohailidbApp failed to launch

java.lang.NullPointerException

at rohailidb.userdb.insert(userdb.java:44)

at rohailidb.RohailidbView.<init>(RohailidbView.java:30)

at rohailidb.RohailidbApp.startup(RohailidbApp.java:19)

at org.jdesktop.application.Application$1.run(Application.java:171)

at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273

)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173

)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

Exception in thread "AWT-EventQueue-0" java.lang.Error: Application class rohailidb.RohailidbApp failed to launch

at org.jdesktop.application.Application$1.run(Application.java:177)

at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273

)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173

)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

Caused by: java.lang.NullPointerException

at rohailidb.userdb.insert(userdb.java:44)

at rohailidb.RohailidbView.<init>(RohailidbView.java:30)

at rohailidb.RohailidbApp.startup(RohailidbApp.java:19)

at org.jdesktop.application.Application$1.run(Application.java:171)

... 8 more

متأسف مرة اخرى على الازعاج!!!! :)

#11

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

لا داعي للأسف فكل الأعضاء هنا يستفيدون ويفيدون ، كل على قدر علمه وفهمه ،

بما أنك نفذت كل ما قلته لك ، فلربما يكون الخطأ في أحد الأشياء التالية :

1 - عدم وجود برنامج ms access في جهازك .

2 - اصدار ms access حيث القاعدة المرفقة عملت بالاصدار 2007 .

3 - اصدار jdk الموجود عندي وهو 6 .

4 - اصدار netbeans وهو 6.5.1 .

وأقوى احتمال هو الأول ثم الثالث ثم الثاني ثم الرابع .

وسوف أحاول إن شاء الله تحسين البرنامج ، ليتمكن المستخدم من تحديد الخطأ بوضوح .

بالتوفيق إن شاء الله .

300_130.gif

#12
rohaili كتب:

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

لا داعي للأسف فكل الأعضاء هنا يستفيدون ويفيدون ، كل على قدر علمه وفهمه ،

بما أنك نفذت كل ما قلته لك ، فلربما يكون الخطأ في أحد الأشياء التالية :

1 - عدم وجود برنامج ms access في جهازك .

2 - اصدار ms access حيث القاعدة المرفقة عملت بالاصدار 2007 .

3 - اصدار jdk الموجود عندي وهو 6 .

4 - اصدار netbeans وهو 6.5.1 .

وأقوى احتمال هو الأول ثم الثالث ثم الثاني ثم الرابع .

وسوف أحاول إن شاء الله تحسين البرنامج ، ليتمكن المستخدم من تحديد الخطأ بوضوح .

بالتوفيق إن شاء الله .

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

لا أرى أن سبب الخطأ سوى مسار قاعدة البيانات ، فقد غيرت المسار بالكود بالسطر 15 إلى ما يلي :

"

Dbq=C:\\Users\\Directeur\\Desktop\\db\\rohaili.mdb";

وهو المسار الذي وضعت به قاعة البيانات لأن اللابتوب تبعي ليس به القسم :D

والبرنامج شغال تمام

شكرا

أبو تماضر

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