قيم SQLite الافتراضية للعمود المنطقي ، لا تعمل كما هو متوقع

0

لدي واحد SQLite جدول بالكيان التالي:

[Table ("employee")]
public class Employees
{
    [Column ("employee_id")]
    [PrimaryKey]
    public int EmployeeId { get; set; }

    [Column ("username")]
    public string UserName { get; set; }

    [Column ("password")]
    public string Password { get; set; }

    [Column ("first_name")]
    public string FirstName { get; set; }

    [Column ("last_name")]
    public string LastName { get; set; }

    [Column ("is_wah_allowed")] //Newly added Column
    public bool IsWAHAllowed { get; set; }  
}

عندما يبدأ التطبيق ، أقوم بإنشاء جدول.

conn.CreateTable<Employees>();

أريد إضافة عمود منطقي جديد مع تعيين القيمة الافتراضية على 0 - خطأ في SQLite لأنه يخزن منطقية 0 أو 1.

حاولت ذلك بالطرق التالية:

حالة 1 :

[Column ("is_wah_allowed")] //Newly added Column

الإخراج: هذا يظهر Null في متصفح DB لـ SQLite

الحالة 2:

[Column ("is_wah_allowed"), Default (false)] //Newly added Column

الإخراج: يطرح هذا استثناء في conn.CreateTable ()؛ - لا يمكن التحويل من bool إلى int.

الحالة 3:

[Column ("is_wah_allowed"), Default (value : 0)] //Newly added Column

الإخراج: يعرض هذا القيم الزائفة في مستعرض DB لـ SQLite ، بدلاً من 0. عندما يعيدني الخادم البيانات ، أقوم بحفظها / تحديثها ثم إظهارها على أنها 0 أو 1 في الصفوف المحدثة ، لأن الخادم يعالج ذلك كقيم عددية.

أريد أن أعرف :

الحالة 1: لماذا تظهر القيمة Null بدلاً من القيمة الافتراضية 0؟

الحالة 2: لماذا يلقي الاستثناء؟

الحالة 3: لماذا يظهر خطأ بدلاً من 0؟

شكرا لك مقدما!!

1 إجابة

0

لا يوجد boolean موجود في SQLite. بدلا من تخزين boolean القيمة في قاعدة البيانات كما int في SQLite. القيم التي يمكنك استخدامها هي 0 للخطأ و 1 للصواب. عندما تذهب واختيار int من قاعدة البيانات. وفقا ل 0 & 1 يمكنك حق بك ifelse منع.

تحرير 1

لا يحتوي SQLite نوع البيانات المنطقي على فئة تخزين منطقية منفصلة. بدلاً من ذلك ، يتم تخزين القيم المنطقية كعدد صحيح 0 (خطأ) و 1 (صحيح).

أنواع بيانات SQLite

لمزيد من المعلومات قم بزيارة هذا

:مؤلف
فوق
قائمة طعام