سؤال

OleDbDataReader oleDbDataReader = oleDbCommand.ExecuteReader(CommandBehavior.KeyInfo);
DataTable dataTable = oleDbDataReader.GetSchemaTable();

كيف GetSchemaTable() الشغل؟

من أين تحصل على معلوماتها في RDBMS؟

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

المحلول

تنفيذ IDataReader.GetSchemaTable() متروك للمزود - لذلك سوف تختلف. يمكنك كتابة مقدمي الخدمات الخاصة بك والقيام بذلك بأي طريقة تريدها.

لكي نكون صادقين ، هذا أمر سيء من التصميم في الإطار - يجب ألا يكون لديك أساليب واجهة تعود إلى غير طبقة DataTable أو DataSet ونتيجة يمكن أن تحتوي على أي شيء. كيندا تهزم نقطة تقييدها بواجهة في المقام الأول: "يجب أن يكون لديك طريقة تعود DataTable لكننا لا نهتم بالصفوف أو الأعمدة التي لديها "

حتى لو كان المزود SQL GetSchemaTable() لا يعود إلى [syscolumns] أو [sysobjects]. سيكون ذلك مكالمة إضافية DB ، وتتطلب امتيازات إضافية وعدم العمل على أي حال ، لأن مجموعة النتائج لا تحتاج إلى تعكس أي كائنات في DB.

لست متأكدًا ، لكنني أتوقع الغالبية العظمى من IDataReader.GetSchemaTable() تطبيقات لقراءة بعض خصائص بيانات التعريف المحتفظ بها مع مجموعة النتائج.

نصائح أخرى

GetSchematable () يقرأ البيانات الوصفية على Resultset التي تم إرجاعها بواسطة Ado.net.

من جداول النظام (على سبيل المثال ، syscolumns ، sysobjects ، إلخ) في كل قاعدة بيانات.

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