النقابي صفيف / التجزئة / جدول هاش باستخدام موصل / NET

StackOverflow https://stackoverflow.com/questions/1443557

  •  22-07-2019
  •  | 
  •  

سؤال

ويا شباب، والعمل مع asp.NET وج #، أنا باستخدام الخلية في الموصل / NET المكونات في ثينغي للاتصال ديسيبل الخلية (لا مفاجآت هناك!).

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

شكرا،

والنفسية

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

المحلول

ووالخلية C / C ++ الموصل التي أفترض أن تكون ملفوفة حول C # (مقابل إعادة تنفيذها في C #) بإرجاع صفيف demential اثنين تحتوي على النتائج. هذه ليست سوى بيانات الصفوف والأعمدة، وليس اسم العمود. أيضا إرجاع API قيمة حقل (اسم عمود) من خلال mysql_fetch_field_direct() - استدعاء دالة منفصلة بعد الحصول على نتائج الاستعلام. هذا هو أيضا مجموعة و-demential اثنين. الموصل نفسها لا يحتوي API لدمج النتيجتين منفصلة (بيانات أسماء الأعمدة + عمود / صف) في جدول التجزئة.

وبدلا من جعل استعلام الثاني للحصول على أسماء الأعمدة، كل ما عليك القيام به هو mysql_fetch_field_direct() دعوة لكل عمود كما تقدم لك من خلال القيم تعيين. هذا يعطيك اسم الحقل جنبا إلى جنب مع البيانات الواردة في هذا العمود / صف واحد. عند هذه النقطة والامر متروك للمطور لكيفية ترتيب تلك البيانات مثل تخزينها في جدول التجزئة، الخ.

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

نصائح أخرى

وفي صافي تحصل فقط datatables وقواعد البيانات، ويتم DataTable ومن datarows، وتلك هي غاية تشبه الى حد بعيد hashtables وفي معظم الحالات، يمكنك استخدام تلك لتحقيق المهام، ولكن اذا كنت بحاجة الى جدول هاش يمكنك استخدام هذا كود

public static Hashtable convertDataRowToHashTable(DataRow dr)
{
    if (dr == null)
    {
        return null;
    }

    Hashtable ret = new Hashtable(dr.Table.Columns.Count);

    for (int iColNr = 0; iColNr < dr.Table.Columns.Count; iColNr++)
    {
        ret[dr.Table.Columns[iColNr].ColumnName] = dr[iColNr];
    }
    return ret;
}

والاتجاه الآخر (الجدول يمتلك لdatrow) ليست بهذه السهولة، وليس لديها datarow منشئ العام (حسب التصميم) وكان لديك للاتصال newRow = myDataTable.NewRow ()؛ للحصول على نسخة جديدة من صف واحد، ومن يمكنك العمل مع صف واحد تقريبا كما هو الحال مع جدول هاش

newRow["column1"]="some value";

ولكن إذا كنت في حاجة الى عمود جديد في جدول هاش سيكون لديك لإضافة عمود إلى DataTable ووعدم صف البيانات myTable.Columns.Add ( "اسم"، "نوع")؛

ويساعد هذا الأمل

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