Как заткнуть sqlite получить возврат только 1 строка - PullRequest
0 голосов
/ 07 октября 2019

я флаттер New-bi

я делаю базу данных sqlite во флаттере

Когда я обновляю только одну базу данных, все данные инициализируются.

Итак, я обнаружил проблему,Причина заключалась в том, что значение, не включенное в «класс», казалось, входило в «ноль» и инициализировало его.

Код обновления:

Todo newtodo = Todo(id: 2,age: _age,name: _name ,intro: _intro);
DBHelper().updateTodo(newtodo);

Todo:

class Todo {
  int id;
  String name;
  String intro;
  String age;
  String password, email;
  String imagelist;

  Todo({
    this.id,
    this.email,
    this.password,
    this.name,
    this.intro,
    this.imagelist,
    this.age,});

  factory Todo.fromJson(Map<String, dynamic> json) => Todo(
    id: json["id"],
    intro: json["intro"],
    name: json["name"],
    age: json["age"],
    email: json["email"],
    password: json["password"],
    imagelist: json["imagelist"],
  );

  Map<String, dynamic> toJson() =>
      {
        "id" :id,
        "name": name,
        "age": age,
        "intro" : intro,
        "email" : email,
        "password" : password,
        "imagelist" : imagelist,
      };

}

Из-за этой проблемы я решил получить данные из базы данных и поместить их в класс.

вот так:

ex) _dataname = (Data Received)
    Todo newtodo = Todo(id: 2,age: _age,name: _name ,intro: _intro, email : _dataname);

you know what i'm mean?

Итак, я хочу получить данные для 'String 'в базе данных!

мой пользовательский DBhelpcode:

import 'package:path_provider/path_provider.dart';
import 'package:sqflite/sqflite.dart';
import 'package:socialapp/model/todo.dart';
import 'dart:async';
import 'dart:io' as io;
import 'package:path/path.dart';
import 'package:flutter/services.dart';
import 'dart:io';

final String tableName = 'person';

class DBHelper{
  DBHelper._();
  static final DBHelper _db = DBHelper._();
  factory DBHelper() => _db;

  static Database _database;

  Future<Database> get database async{
    if(_database == null){
      _database = await initDB();
      return _database;}else {
      return _database;
    }
  }
  DB() async{
    Directory dbDir = await getApplicationDocumentsDirectory();
    final Future<Database> DBopen = openDatabase(
      await join(dbDir.path, "socialDB.db"),
      version: 1,
    );
    return DBopen;
  }

  initDB() async{
    Directory dbDir = await getApplicationDocumentsDirectory();
    String path = join(dbDir.path, "socialDB.db");
    print(path);
    ByteData data = await rootBundle.load(join('assets', 'socialapp.db'));
    List<int> bytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
    await File(path).writeAsBytes(bytes);
    return await openDatabase(
      path,
      version: 1,
      onOpen: (db) {},
      onCreate: (Database db, int version) async{
        await db.execute('''
        CREATE TABLE $tableName(
        id INTEGER PRIMARY KEY,
        email TEXT,
        password TEXT,
        name TEXT,
        intro TEXT,
        imagelist TEXT,
        age TEXT) ''');
      },
    );
  }


  createData(Todo todo)async{
    final db = await database;
    var res = await db.insert(tableName, todo.toJson());
    return res;
  }

  getperson(int id) async{
    final db = await DB();
    List<Map> results = await db.query(tableName,
      columns : ["id", "name", "imagelist"],
      where : 'id = ?',
      whereArgs : [id]);
    if(results.length > 0){
      return Todo.fromJson(results.first);
    }
    return null;
  }



  //read
  getTodo(int id) async{
    final db = await DB();
    var res = await db.query(tableName, where: 'id = ?', whereArgs: [id]);
    return res.isNotEmpty ? Todo.fromJson(res.first) : Null;
  }

  getAllTodos() async{
    final db = await database;
    var res = await db.query(tableName);
    return res;
  }
  updateTodo(Todo todo) async{
    final db = await DB();
    var res = await db.update(tableName, todo.toJson(),
        where: 'id =?' , whereArgs: [todo.id]);
    print('update');
    return res;
  }

  //Delete
  deleteTodo(int id) async{
    final db = await database;
    db.delete(tableName, where: 'id =?', whereArgs: [id]);
  }

  deleteAllTodos() async{
    final db =await database;
    db.rawDelete("Delete * from $tableName");
  }
}

Суть в том, что я хочу получить объект из базы данных в виде строки.

Как я могу сделать .?

пожалуйста, помогите мне ...: (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...