كيف يمكنني تضمين dbnull كقيمة في مجموعة بيانات مكتوبة بقوة؟

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

سؤال

لقد قمت بإنشاء مجموعة بيانات مكتوبة بشدة (MyDataset) في تطبيق .NET الخاص بي. من أجل البساطة، سنقول أنه يحتوي على واحد DataTable (mydatatable)، مع عمود واحد (mycol). يحتوي MyCol على خصائص DataType الخاصة به إلى "System.int32"، ومجموعة خاصية ANDDBNULL الخاصة بها إلى "True".

أرغب في إنشاء صف جديد يدويا، وأضفه إلى هذه البيانات. أقوم بإنشاء الصف دون مشكلة، مع شيء مثل:

MyDataSet.MyDataTableRow myRow = MySimpleDataSet.MyDataTable.NewItemRow();

بخير. ومع ذلك، عندما أحاول ضبط القيمة على dbnull:

myRow.MyCol = DBNull.Value;

أخبرت أنني لا أستطيع القيام بذلك ... أنه لا يمكن أن يلقي ذلك إلى INT. هذا منطقي، بطريقة ما، لأنني تعرف أنه كثيف ... ولكن بعد ذلك كيف يمكنني الحصول على dbnull في هناك؟ أنا لست من المفترض أن أكون قادرا على تناول dbnull هناك؟ أليس هذا هو الخاصية mountddbnull ل؟

من الواضح أنني تفتقد شيئا طائفا. هل يمكن لشخص ما أن يساعد في تفسير ما هو عليه؟

تعديل: لقد حاولت أيضا الدخول "int؟" بصفتها DataType، لكن Visual Studio يلقي خطأ عند إدخاله، قائلا أن "العمود يتطلب نموذج بيانات صالح".

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

المحلول

لديك في فئة MyDatatableerow طريقة تم إنشاؤها باسم: setmycolnull ().

myRow.SetMyColNull();

يمكنك أيضا القيام به:

myRow["MyCol"] = DBNull.Value;

لأن myRow["MyCol"] هو من النوع object

تحرير (أضيفت عن طريق السؤال OP):

هناك أيضا طريقة نظيرية تم إنشاؤها لقراءة هذه القيمة مرة أخرى، ismycolnull ().

نصائح أخرى

هناك شيئان.

السماح DBNull هو إعداد منفصل من القدرة على تعيين القيمة إلى DBNull.

لقد استخدمت فقط واجهة DataSet XSD لتعيين هذا ... ولكن لم يكني لم أقم بتعيين فقط "ANDINGDBNULL = TRUE"، لكني اضطررت أيضا لتعيين "nullvalue = (null)". في الأصل تم تعيين "Nullvalue" على "(استثناء)". هذا يعني أن DataSet ستقبل Bieng .fill () إد مع NULL، ولكن لن يسمح لك بتعيين القيمة يدويا إلى NULL.

لست متأكدا مما إذا كانت هذه مشكلتك، لكنها تبدو مشابهة.

فقط انتقل إلى وضع المصمم في DataSet والنقر بزر الماوس الأيمن على الحقل الذي تريد أن تكون تمكين NULL، وحدد خصائص، في نافذة الخصائص، قم بتعيين ANDINGDBNULL إلى TRUE و NullValue إلى (NULL)؛ إنه يعمل لي الحق! مع أطيب التحيات !

int لا يقبل فارغة، ولكن int؟ (النسخة اللازمة) لا. أعتقد أنك بحاجة إلى نوع البيانات بدلا من ذلك.

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