إضافة بايت [] إلى dataRow
سؤال
أحاول كتابة اختبار يقوم بإرجاع قارئ البيانات مع أحد الأعمدة كونه بايت []. كنت أحسب أنه يمكنني إنشاء 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");
, ، قمت بتعريف اسم العمود ، ولكن لم تمنحه نوعًا ، لذا فهو افتراضي إلى كونه عمود "سلسلة". يجب عليك اتباع المثال في المستند من أجل إنشاء مخطط الجدول قبل إضافة البيانات إلى الجدول.