سؤال

نقوم بتطوير تطبيق إعداد التقارير يستخدم ASP.NET-MVC (.NET 4). نتواصل من خلال ddtek.sybase الوسيطة بقاعدة بيانات Sybase ASE 12.5.

نحن نواجه مشكلة في سحب البيانات إلى DataReader (من إجراء مخزن). يحسب الإجراء المخزن القيم (حوالي 50 عمودًا) من خلال القيام بمبالغ وتهم واتصال الإجراءات المخزنة الأخرى.

المشكلة التي نواجهها هي ... معينة (ربما 5 ٪ من الأعمدة) تعود مع NULL أو 0. إذا قمنا بتصحيح ونسخ عبارة SQL المستخدمة في DataReader وتشغيلها داخل أداة SQL أخرى ، نحصل على جميعها صالحة قيم لجميع الأعمدة.



conn = new SybaseConnection
{
     ConnectionString = ConfigurationManager.ConnectionStrings[ConnectStringName].ToString()
};
conn.Open();

cmd = new SybaseCommand
{
     CommandTimeout = cmdTimeout,
     Connection = conn,
     CommandText = mainSql
};


reader = cmd.ExecuteReader();
// AT THIS POINT IMMEDIATELY AFTER THE EXECUTEREADER COMMAND
// THE READER CONTAINS THE BAD (NULL OR 0) DATA FOR THESE COLUMNS.

DataTable schemaTable = reader.GetSchemaTable();
// AT THIS POINT WE CAN VIEW THE DATATABLE FOR THE SCHEMA AND IT APPEARS CORRECT
// THE COLUMNS THAT DON'T WORK HAVE SPECIFICATIONS IDENTICAL TO THE COLUMNS THAT DO WORK 



هل واجه أي شخص مشاكل مثل هذا باستخدام Sybase و Ado؟


شكرا ، جون ك.

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

المحلول

تم حل المشكلة! ... تبين أن المشكلة تبين أنها اختلاف في الطريقة التي تم بها التعامل مع الفهود في SQL. ... كان لدينا العديد من الحالات في الإجراء المخزن الذي استخدم اختبارات الفارغ غير ANSI. (x = null بدلاً من x هي خالية) ، كانت أدوات SQL التي استخدمتها لاختبار هذه المشكلة تتخلف عن "مجموعة Ansinull" إلى OFF بينما لم تكن رمز ADO لدينا ، لذا كانت قيمة "مجموعة Ansinull" قيد التشغيل. بسبب هذا الإعداد ، فإن رمز SQL الذي تم اختباره لـ NULL لن يختبر أبدًا "صحيح" مما يسمح بإعادة القيمة الفارغة.

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