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

مشكة في الاتصال بقاعدة Access على جهاز المستخدم ( متصفح الموقع )

بدأه rohaili في 6 نوفمبر 2009 · 17 رد · 1,749 مشاهدة · في JavaEE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عند رفع الموقع على الانترنت ظهرت لي المشكلة التالية :

عند محاولة إضافة بيانات من قاعدة بيانات الموقع mysql إلى قاعدة بيانات على جهاز المستخدم access تظهر رسالة خطأ ، مع العلم أن الموقع يعمل في الجهاز ، وأظن المشكلة عدم توفر access في السيرفر فهل هذا صحيح وكيف يمكن حل المشكلة ؟

رسالة الخطأ :


sun.jdbc.odbc.JdbcOdbcDriver.initialize(JdbcOdbcDriver.java:436)
sun.jdbc.odbc.JdbcOdbcDriver.connect(JdbcOdbcDriver.java:153)
java.sql.DriverManager.getConnection(DriverManager.java:582)
java.sql.DriverManager.getConnection(DriverManager.java:207)
sdu.accessdb.update(accessdb.java:26)
sdu.add.processRequest(add.java:25)
sdu.add.doGet(add.java:49)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
java.lang.NullPointerException

السطر رقم 26 الذي تشير إليه رسالة الخطأ :

conn = DriverManager.getConnection(url);

هذا url المذكور في السطر السابق


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

300_130.gif

#2

بالعادة في برمجة الويب

العميل هو من يقوم بالإضافة على قاعدة بايانات السيرفر

لكن الخادم لا يقوم بالعكس

اشرحلي تفاصيل الموقع وسأخبرك ما الحل الأمثل إن شاء الله

بالمناسبة كيف تقوم بالإضافة على قاعدة بيانات عند client

هل تستخدم applet لهذه العملية

أم تستخدم Ejb

برجاء تكلم أكثر عن هيكلية المشكلة

تحياتي

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

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

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

728x90.png

#3

الموقع يقوم بجمع بيانات العملاء في قاعدة الموقع mysql ، وبعد الانتهاء يتم نسخ البيانات من قاعدة الموقع إلى قاعدة الشركة access ، وذلك عن طريق أوامر sql ، وليس عن طريق applet أو Ejb .

300_130.gif

#4

هذا الكلام غير واضح

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

الأمر غير واضح بالمرة

هلا أمكن أن توضح بالتفصيل الهيكلية للموقع

يبدو أنك لا تشرح الموضوع بشكل جيد

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

تحياتي

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

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

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

728x90.png

#5

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

أخى rohaili قد قمت بعمل مشروع صغير يتصل بقاعدة بيانات Access كما فعلت فى برنامجك

وظهرت عندى نفس المشكلة وكان الحل ان تغير نوع الاتصال بقاعدة البيانات Access

فهذا المسار الذى تستخدمه هو للاتصال بقاعدة البيانات كملف Offline ويبدو ان هذا لا يجوز مع تطبيقات الويب

فالمشكلة عندى تم حلها بعد عمل ODBC Driver لقاعدة البيانات من Control Panel وانت اكيد طبعا تعرف الطريقة

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

وهى ليست server لكنها ملف واحد ويجب ان يتم الاتصال بها على طريقتك

اطلعنا على اى جديد

بالتوفيق

تم تعديل هذه المشاركة بواسطة MOHAMED FATHEI في 7 نوفمبر 2009 في 19:14


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#6

جزاكم الله خيرا .

جربت عمل اسم dns لقاعدة البيانات من لوحة التحكم ، ولكن لا جديد ، يعمل في جهازي وتظهر نفس الرسالة السابقة عند تجريب الموقع في الانترنت .

مرفق المشروع بشكل مصغر ( الصفحة الخاصة بالاتصال واستيراد وتصدير البيانات من وإلى قاعدة access ) ، بهيئة netbeans .

اعتقد ان المشكلة في مسار الملف فلو استطعت معرفة مسار الملف على الشبكة ربما تحل المشكلة ، أقصد أن لكل جهاز متصل بالشبكة رقم ip فلو عرفت رقم جهاز العميل فهل يمكن الوصول إلى ملفاته ، وكيف يكون المسار إن كان ذلك ممكنا ؟

أو أن المشكلة في الموقع لا يدعم microsoft access ؟

sdu.zip

300_130.gif

#7

أنت تريد الإتصال بremote database ، وبالتالي الdriver يجب ان يحتوي على مسار القاعده للعنوان ip المعين للعميل ،،

فمثلا في Mysql أنت تتصل بالdriver :

	conn =
	   DriverManager.getConnection("jdbc:mysql://localhost/test?" +
								   "user=monty&password=greatsqldb");

أعتقد يجب تغيير الLocalhost بعنوان الIP للعميل .. هذا بالنسبة لMy-sql

بالنسبة لms-access فلا أعلم بالضبط ، سأرى وارد اذا وصلت لنتيجه ،

اضافة الى أنه يمكن عمل برنامج يقوم بجلب القاعده بالكامل من السيرفر من خلال الsocket العادي ، وبعدها تعامل معها Locally اذا أردت ،،

بالتوفيق ،،

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#8

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

الموقع ذكر أنه لا يدعم الاتصال البعيد remote ، فهل يمكن أن تدلني على الخطوة الأولى في socket لجلب القاعدة من الموقع ، وهل يمكن استخدامه لرفع قاعدة من الجهاز للموقع ؟

300_130.gif

#9

اهاااااا اتضحت الفكرة لدي

تحتاج إلى برنامج client server

يمكنك العودة إلى دروس الشبكات في المواضيع المميزة في المنتدى الأصلي

ستجد هناك عدد من الشروحات حول الموضوع

على كل قمت بعمل template بسيط لبرمجة الشبكات ككل باستخدام socket

لمحة جافاوية 46: برمجة الشبكات في قالب

تحياتي

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

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

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

728x90.png

#10

جزاك الله خيرا ، بعدقرائتي لردك في المشاركة السابقة نبعت لدي فكرة استخدام الأبلت وشرعت في تنفيذها ، وتمكنت من جمع البيانات من القاعدة على جهاز العميل ، ثم استخدمت الجافا سكربت كما في حل محمد فتحي في المشاركة التالية :

/index.ph...p;#entry1033971

وأرسلت البيانات إلى الموقع .

كذلك استخدمت أبلت يضيف البيانات إلى قاعدة العميل ، بعد تمرير البيانات له .

وعندي سؤال بسيط ، إلى كم حرف يمكن أن يصل طول الكائن String ، وهل يؤثر طول النص في عملية نقله من الأبلت للموقع أو تمريره للأبلت ؟

300_130.gif

#11

طول String هو Integer.MAX_INTEGER

استخدم post لأنها مضمونة على كل المتصفحات

(get لها حدود في بعض المتصفحات)

تحياتي

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

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

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

728x90.png

#12

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

ماذا تعني بـ Integer.MAX_INTEGER .

أقصد هل يمكن أن يصل طول النص في الكائن string إلى 50000 حرف مثلا ، وهل يمكنني تحديد طول النص ؟

300_130.gif

#13

http://java.sun.com/....html#MAX_VALUE

القيمة هي 231-1

كما قال علاء فبعض المتصفحات تضع حدودا عى طول الurl، خصوصا IE. هذا الأخير يحددها في 2083 http://support.microsoft.com/kb/208427

firefox يتيح url أطول بكثير لكن لا اعلم بالضبط القيمة

#14

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

بالنسبة للطريقة post الحد هو 2 أس 32 ناقص 1 .

أما get فهو 2048 ناقص المسار الفعلي .

هل هذا صحيح ؟

1

300_130.gif

#15

الحد الذي تضعه المتصفحات هو على طول الurl، وبما أن get تستعمل الurl لتمرير الparameters، فما ينطبق على الurl ينطبق عليها. بالنسبة لpost فهي غير معنية بهذا الأمر، لكن لا أدري ما هو حدها الأقصى

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

#16

السلام عليكم

لدى سؤال بسيط

هل ينطبق طول الurl أيضا على الurl الذى يتم ارساله باستخدام الدالة GET فى Ajax

على الرغم من انه مخفى فهو لايتم ارساله فى المتصفح (داخل ال Address Bar )

شكرا لكم


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#17

في النهاية يظل get

بأمانة لا أعلم ما وضع الـ ajax مع المتصفحات القديمة

تحياتي

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

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

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

728x90.png

#18

يبدو أنه لا مفر من HttpUrlConnection

مشكور أخ علاء


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

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

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

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

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

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