سؤال

أحاول كتابة اختبار يقوم بإرجاع قارئ البيانات مع أحد الأعمدة كونه بايت []. كنت أحسب أنه يمكنني إنشاء DataTable وإنشاء قارئ من ذلك.

var cboTable = new DataTable("CBOTable");
var colValue = new SqlBinary(ASCII.GetBytes("Hello This is test"));

cboTable.Columns.Add("ByteArrayColumn");
cboTable.Rows.Add(colValue);

var reader= cboTable.CreateDataReader();

المشكلة هي عندما أضيف colValue إلى dataRow بدلاً من إضافته ك byte[] يضيفه إلى الصف كما هو تمثيل السلسلة "SqlBinary(18)".

سؤالي هو كيف أضيف فعليًا byte[] إلى dataRow الخاص بي

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

المحلول

بالنسبة الى MSDN:

إذا كنت تقوم بإنشاء DataTable بشكل برمجي ، فيجب عليك أولاً تحديد مخططها عن طريق إضافة كائنات DataColumn إلى DataColumnCollection (يمكن الوصول إليها من خلال خاصية الأعمدة). لمزيد من المعلومات حول إضافة كائنات DataColumn ، راجع إضافة أعمدة إلى dataTable (ADO.NET).

عن طريق الكتابة cboTable.Columns.Add("ByteArrayColumn");, ، قمت بتعريف اسم العمود ، ولكن لم تمنحه نوعًا ، لذا فهو افتراضي إلى كونه عمود "سلسلة". يجب عليك اتباع المثال في المستند من أجل إنشاء مخطط الجدول قبل إضافة البيانات إلى الجدول.

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