سؤال

لقد تم كتابة جافا التطبيق على الجهاز الخاص بي وهو يعمل تماما باستخدام DB أنشأت ولكن عندما كنت تثبيته على الموقع يفجر لأن DB هو مختلفة قليلا.

لذلك أنا في عملية كتابة بعض التعليمات البرمجية للتحقق من أن:

  • A:لدي DB التفاصيل الصحيحة

  • ب:قاعدة البيانات كافة الجداول اتوقع لديهم الحق في الأعمدة.

لقد حصلت على أسفل ولكن لدي أي فكرة من أين تبدأ مع ب ، أي اقتراحات ؟

الهدف DB الحالي عميل أوراكل ، ولكن التطبيق يمكن تكوين تشغيل SQL Server أيضا.حتى حل عام سيكون موضع تقدير ، ولكن ليس nessisary كما أنا متأكد من أني يمكن معرفة كيفية القيام به واحد من الآخر.

هل كانت مفيدة؟

المحلول

عليك أن ترغب في الاستعلام عن information_schema من قاعدة البيانات ، وفيما يلي بعض الأمثلة Oracle, كل منصة أنا على علم لديه شيئا من هذا القبيل.

http://www.alberton.info/oracle_meta_info.html

نصائح أخرى

كنت قد تكون قادرة على استخدام قاعدة بيانات الهجرة أداة مثل LiquiBase لهذا-معظم هذه الأدوات لديها طريقة التحقق من قاعدة البيانات.ليس لدي خبرة في استخدامه لذلك هو تخمين.

يمكنني استخدام DbUnit لاختبار قواعد البيانات.بل هو جافا القائمة على الحل ، أن يدمج بشكل جيد مع Junit.فمن الممكن استخدامه مع ما يقرب من أي جافا.أنا لم تستخدم في نفس الوضع بالضبط كما وصفته أنت ، ولكن يجب أن تكون قريبة بما فيه الكفاية للعمل.

معظم عامة الحل سيكون تنفيذ الاستعلامات مع تحديد شرط وجود المتوقع coulmns من شرط وجود أسماء الجداول ، في محاولة catch.يمكنك وضع جملة where 1=2 حتى لا تجلب أي بيانات.إذا كان الاستعلام تنفيذها دون رمي استثناء ثم كنت قد حصلت المتوقع الجدول والأعمدة.

قليلا قطعة مختلفة قد يكون من الأفضل التعامل معها من قبل البرمجة إنشاء قاعدة البيانات في المقام الأول.وهي عملية آلية يتيح لك فرصة أفضل لجعل اثنين متطابقة.

نقطة أخرى تستحق صنع يمكنك تقليل المخاطر الخاصة بك من خلال جعل devl وهمز بيئات مماثلة - نفس مخطط قاعدة البيانات والبائعين على حد سواء.تغيير الظروف التي تجعل مختلفين.

وأخيرا لا أقول لكم ما هو "قليلا" مختلفة ، ولكن في بعض الأحيان هذه لا يمكن تجنبها (مثلا ، أوراكل يستخدم تسلسل SQL Server يستخدم هويات).ربما السبات يمكن أن تساعدك على التبديل بين البائعين موثوق أكثر.ومن الخلاصات التفاصيل في مثل هذه الطريقة التي تغير قواعد البيانات يمكن أن يعني تعديل قيمة واحدة في ملف التكوين.

ما تحتاج إلى أن يكون هو في الأساس وحدة اختبارات قاعدة البيانات الخاصة بك."عمود يجب أن يتواجد اسمه FOOBAR, نوع يجب أن يكون عدد صحيح.لا مفاتيح خارجية قد تكون موجودة.... الخ"

هذا غير قابلة للتنفيذ مع عادي JUnit و JDBC (نسأل الجدول عن البيانات الفوقية) كما قد ترغب في التأكد من أن كنت على يقين تماما ما يجري القيام به والتي قد تكون أصعب عند استخدام مثلdbUnit.

يمكنك التحقق من وجود الجداول والأعمدة آراء ، وما إلى ذلك.استخدام هذه الجداول في أوراكل

USER_TABLES USER_VIEWS USER_PROCEDURE

(أو شيء) USER_OBJECTS حيث نوع _ الكائن = '??'

على الاستمرار...USER_TAB_COLS على أعمدة الجدول

تحياتي K

يمكنني استخدام MigrateDB من أجل هذا.فإنه يتيح لك بناء استعلامات أن تفعل أشياء مثل التحقق من وجود بالنظر إلى الجداول والأعمدة والصفوف ، إلخ.معين قاعدة البيانات و استخدام هذه "الاختبارات". إذا فشل الاختبار ، المشغلات "العمل" (الذي هو مجرد استفسار آخر أن يعرف كيفية معالجة المشكلة.)

MigrateDB يدعم قاعدة بيانات متعددة المنصات (يمكنك تحديد "التحقق من الجدول وجود الاستعلام" لكل منصة ، على سبيل المثال), شكلي تماما الاختبارات (يمكنك أن تجعل الخاصة بك) ، يأتي مع كامل إلى حد ما أوراكل الاختبارات و يمكن تشغيل في "المراجعة فقط" الوضع بحيث أنه فقط يقول لك ما هي الاختلافات.

انها لطيفة وقوية الحل.

إذا كنت تستخدم عادي JDBC, عليك أن تحاول استخدام هذه الطريقة: DatabaseMetadata.getTables وغيرها من أساليب مماثلة متوفرة في الطبقة الفوقية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top