Flutter DatabaseException(检查约束失败)

时间:2021-01-21 11:21:06

标签: database flutter dart unhandled-exception sqflite

我正在尝试向 sqflite 表中插入一些数据,但在执行插入查询时出错 这是我创建数据库的代码

Future _onCreate(Database db, int version) async {
await db.execute('''
          CREATE TABLE $clientTable (
            $colId INTEGER PRIMARY KEY AUTOINCREMENT,
            $colDisplay TEXT NOT NULL UNIQUE,
            $colFistName TEXT NOT NULL ,
            $colLastName TEXT,
            $colGstNo TEXT UNIQUE CHECK (length($colGstNo) = 15),
            $colWebsite TEXT UNIQUE,
            $colPhone  INTEGER UNIQUE
            CHECK (length($colPhone) <= 15 AND length($colPhone) >= 7),
            $colEmail TEXT UNIQUE,
            $colCurrency INTEGER  DEFAULT 1,
            $colPaymentTerm INTEGER DEFAULT 1,
            $colEmailReminder BOOLEAN DEFAULT 0,
            $colCreatedAt TEXT,
            $colTotal DECIMAL (10, 2) DEFAULT 0.0
          )
          ''');

}

这是我得到的错误

[ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: DatabaseException(CHECK constraint failed: clientsTable (code 275)) sql 'INSERT INTO clientsTable (displayName, firstName, lastName, gstNo, website, phone, email, currency, paymentTerm, emailReminder, createdAt, total) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' args [john, john , , , , 2345367456, , rupee, NET 0, false, Jan 21, 2021, 10.21]}

数据插入代码

Future<int> insert(Client client) async {
    Database db = await database;
    int id = await db.insert(clientTable, client.toMap());
    return id;
  }

映射函数

Map<String, dynamic> toMap() {
    var map = Map<String, dynamic>();
    if (id != null) {
      map['id'] = _id;
    }

    map['displayName'] = _displayName;
    map['firstName'] = _firstName;
    map['lastName'] = _lastName;
    map['gstNo'] = _gstNo;
    map['website'] = _website;
    map['phone'] = _phone;
    map['email'] = _email;
    map['currency'] = _currency;
    map['paymentTerm'] = _paymentTerm;
    map['emailReminder'] = _emailReminder;
    map['createdAt'] = _createdAt;
    map['total'] = _total;

    return map;
  }

0 个答案:

没有答案