ينزعج العديد من الأصدقاء من مشكلة المسار النسبي لقاعدة بيانات ACCESS في برنامج .net، مما يجعلهم يضطرون إلى تعديل web.config في كل مرة يقومون فيها بنقل البرنامج.
مسار قاعدة البيانات في سلسلة اتصال قاعدة البيانات.
يكتب العديد من الأشخاص ما يلي في ملف web.config الخاص بهم:
<إعدادات التطبيق>
البرنامج مكتوب هكذا :
MyConn = new OleDbConnection(System.Configuration.ConfigurationManager.AppSettings["OLEDBCONNECTIONSTRING"]);// ملاحظة: تتم كتابة إعدادات التكوين بشكل مختلف في VS2005 وVS2003. تحقق من الاختلافات المحددة بنفسك
بهذه الطريقة، عند تشغيل البرنامج كما يُطلب في كثير من الأحيان ما يلي:
'C:WINDOWSsystem32~App_DataData.mdb' ليس مسارًا صالحًا. حدد ما إذا كان اسم المسار مكتوبًا بشكل صحيح وما إذا كنت متصلاً بالخادم حيث تم تخزين الملف. مصدر البيانات=~App_DataData.mdb
حتى لو كان المسار المطلق صحيحًا، فيجب تعديل web.config عند زرع البرنامج، لذلك يكون الأمر أكثر إزعاجًا.
هناك أيضًا طرق لاستخدام Server.MapPath مثل ASP في web.config للحصول على مسار قاعدة البيانات، لكن web.config لا يتعرف على Server.MapPath، لذلك لا تعمل هذه الطريقة.
لاحقًا، من خلال الاستكشاف والرجوع إلى البرامج الأخرى، توصلت إلى الطريقة التالية، والتي يمكنها بسهولة زرع مسار البرنامج دون الحاجة إلى تعديل مسار قاعدة بيانات ACCESS.
ما كتبته في web.config هو كما يلي:
<إضافة مفتاح = "SQLConnString" value = "provider=microsoft.jet.oledb.4.0؛ مصدر البيانات = "/>
<إضافة مفتاح = "dbPath" value = "~/App_Data/mydata.mdb"/>
في فئة الوصول إلى البيانات في البرنامج، قمت بإزالة "SQLConnString" و"dbPath" وقمت بتوصيلهما بسلسلة "CONN_STRING_NON_DTC"
سلسلة عامة ثابتة للقراءة فقط CONN_STRING_NON_DTC = System.Configuration.ConfigurationManager.AppSettings["SQLConnString"].ToString() + System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["dbPath"]) + ";";
هذه هي طريقة الكتابة في VS2005. لقد قمت بتعريف CONN_STRING_NON_DTC على أنها ثابتة للقراءة فقط لسهولة الاستخدام.
حسنًا، بهذه الطريقة يمكنك زرع برنامجك كما تشاء دون الاهتمام بمسار قاعدة البيانات، مرة واحدة وإلى الأبد ^_^، مناسب للأشخاص الكسالى مثلي!