Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复Flatter sqflite opendatabase错误?_Database_Flutter_Sqflite_Opendatabase - Fatal编程技术网

如何修复Flatter sqflite opendatabase错误?

如何修复Flatter sqflite opendatabase错误?,database,flutter,sqflite,opendatabase,Database,Flutter,Sqflite,Opendatabase,双用户 我成功地在iOS中使用带有sqflite的数据库运行 但我在安卓系统中遇到了问题 DBHelper代码: import 'package:path_provider/path_provider.dart'; import 'package:sqflite/sqflite.dart'; import 'package:socialapp/model/todo.dart'; import 'dart:async'; import 'dart:io'; import 'package:path

双用户

我成功地在iOS中使用带有sqflite的数据库运行

但我在安卓系统中遇到了问题

DBHelper代码:

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



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){
      print('데이터베이스 없음 , 초기화 시작');
      _database = await initDB();
      return _database;}else {
      print('이미 데이터베이스가 존재');
      return _database;
    }
  }


  initDB() async{
//    Directory documentsDirectory = await getApplicationDocumentsDirectory();
    String path = join('/Users/landwhale', 'Person_Pro_file.db');
    print('초기화중');
    print(path);
    return await openDatabase(
      path,
      version: 1,
      onOpen: (db) {},
      onCreate: (Database db, int version) async{
        await db.execute('''
        CREATE TABLE $tableName(
        id INTEGER PRIMARY KEY,
        name TEXT,
        intro TEXT,
        age TEXT) ''');
      },
    );
  }


  createData(Todo todo)async{
    print('데이터베이스 생성중..');
    final db = await database;
    print('데이터베이스 추가중 ...');
    var res = await db.insert(tableName, todo.toJson());
    print('데이터베이스 추가완료');
    return res;
  }

  //read
  getTodo(int id) async{
    final db = await database;
    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(tableNam
//  }
  updateTodo(Todo todo) async{
    final db = await database;
    var res = await db.update(tableName, todo.toJson(),
        where: 'id =?' , whereArgs: [todo.id]);
    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");
  }
}
import'package:path_provider/path_provider.dart';
导入“包:sqflite/sqflite.dart”;
导入“package:socialapp/model/todo.dart”;
导入“dart:async”;
导入“dart:io”;
导入“package:path/path.dart”;
最终字符串tableName='person';
类DBHelper{
DBHelper.uz();
静态最终DBHelper _db=DBHelper.u();
factory DBHelper()=>\u db;
//해당 변수에 데이터베이스 정보 저장
静态数据库;
未来获取数据库异步{
如果(_database==null){
打印('데이터베이스 없음 , 초기화 시작');
_数据库=等待initDB();
返回_database;}else{
打印('이미 데이터베이스가 존재');
返回数据库;
}
}
initDB()异步{
//目录文档Directory=await getApplicationDocumentsDirectory();
String path=join('/Users/landwhale','Person_Pro_file.db');
打印('초기화중');
打印(路径);
返回等待openDatabase(
路径
版本:1,,
onOpen:(db){},
onCreate:(数据库数据库,int版本)异步{
等待数据库执行(“”)
创建表$tableName(
id整数主键,
名称文本,
介绍文本,
年龄文本“”);
},
);
}
createData(Todo Todo)异步{
打印('데이터베이스 생성중..');
最终数据库=等待数据库;
打印('데이터베이스 추가중 ...');
var res=await db.insert(tableName,todo.toJson());
打印('데이터베이스 추가완료');
返回res;
}
//阅读
getTodo(int-id)异步{
最终数据库=等待数据库;
var res=await db.query(tableName,其中:“id=?”,wherergs:[id]);
return res.isNotEmpty?Todo.fromJson(res.first):Null;
}
//getAllTodos()异步{
//最终数据库=等待数据库;
//var res=await db.query(tableNam
//  }
updateTodo(Todo Todo)异步{
最终数据库=等待数据库;
var res=await db.update(tableName,todo.toJson(),
其中:“id=?”,wherergs:[todo.id]);
返回res;
}
//删除
deleteTodo(int-id)异步{
最终数据库=等待数据库;
delete(tableName,其中:“id=?”,其中rgs:[id]);
}
deleteAllTodos()异步{
最终数据库=等待数据库;
db.rawDelete(“从$tableName中删除*);
}
}
Todo类代码:



class Todo {
  int id;
  String name;
  String intro;
  String age;

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

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

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

}

待办事项{
int-id;
字符串名;
字符串介绍;
弦年龄;
待办事项({
这个身份证,
这个名字,
这个,介绍,
这个年龄,});
工厂Todo.fromJson(映射json)=>Todo(
id:json[“id”],
简介:json[“简介”],
名称:json[“名称”],
年龄:json[“年龄”],
);
映射到JSON()=>
{
“id”:id,
“姓名”:姓名,
“年龄”:年龄,
“简介”:简介,
};
}
错误:

데이터베이스 생성중..
I/flutter ( 2952): 데이터베이스 없음 , 초기화 시작
I/flutter ( 2952): 초기화중
I/flutter ( 2952): /Users/landwhale/Person_Pro_file.db
E/flutter ( 2952): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: DatabaseException(open_failed /Users/landwhale/Person_Pro_file.db)
E/flutter ( 2952): #0      wrapDatabaseException (package:sqflite/src/exception_impl.dart:11:7)
E/flutter ( 2952): <asynchronous suspension>
E/flutter ( 2952): #1      SqfliteDatabaseFactoryImpl.wrapDatabaseException (package:sqflite/src/factory_impl.dart:29:7)
E/flutter ( 2952): #2      SqfliteDatabaseMixin.safeInvokeMethod (package:sqflite/src/database_mixin.dart:184:15)
E/flutter ( 2952): #3      SqfliteDatabaseMixin.openDatabase (package:sqflite/src/database_mixin.dart:519:15)
E/flutter ( 2952): <asynchronous suspension>
E/flutter ( 2952): #4      SqfliteDatabaseMixin.doOpen (package:sqflite/src/database_mixin.dart:612:28)
E/flutter ( 2952): <asynchronous suspension>
E/flutter ( 2952): #5      SqfliteDatabaseOpenHelper.openDatabase (package:sqflite/src/database.dart:32:22)
E/flutter ( 2952): <asynchronous suspension>
E/flutter ( 2952): #6      SqfliteDatabaseFactoryMixin.openDatabase.<anonymous closure> (package:sqflite/src/factory_mixin.dart:100:43)
E/flutter ( 2952): <asynchronous suspension>
E/flutter ( 2952): #7      ReentrantLock.synchronized.<anonymous closure>.<anonymous closure> (package:synchronized/src/reentrant_lock.dart:33:24)
E/flutter ( 2952): #8      _rootRun (dart:async/zone.dart:1124:13)
E/flutter ( 2952): #9      _CustomZone.run (dart:async/zone.dart:1021:19)
E/flutter ( 2952): #10     _runZoned (dart:async/zone.dart:1516:10)
E/flutter ( 2952): #11     runZoned (dart:async/zone.dart:1463:12)
E/flutter ( 2952): #12     ReentrantLock.synchronized.<anonymous closure> (package:synchronized/src/reentrant_lock.dart:32:24)
E/flutter ( 2952): <asynchronous suspension>
E/flutter ( 2952): #13     BasicLock.synchronized (package:synchronized/src/basic_lock.dart:31:26)
E/flutter ( 2952): <asynchronous suspension>
E/flutter ( 2952): #14     ReentrantLock.synchronized (package:synchronized/src/reentrant_lock.dart:28:17)
E/flutter ( 2952): <asynchronous suspension>
E/flutter ( 2952): #15     SqfliteDatabaseFactoryMixin.openDatabase (package:sqflite/src/factory_mixin.dart:66:17)
E/flutter ( 2952): #16     openDatabase (package:sqflite/sqflite.dart:150:26)
E/flutter ( 2952): #17     DBHelper.initDB (package:socialapp/widgets/database_create.dart:36:18)
E/flutter ( 2952): <asynchronous suspension>
E/flutter ( 2952): #18     DBHelper.database (package:socialapp/widgets/database_create.dart:23:25)
E/flutter ( 2952): <asynchronous suspension>
E/flutter ( 2952): #19     DBHelper.createData (package:socialapp/widgets/database_create.dart:54:22)
E/flutter ( 2952): <asynchronous suspension>
E/flutter ( 2952): #20     _writeprofile2State.onPressed (package:socialapp/page/writeprofile2.dart:192:18)
E/flutter ( 2952): #21     _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:654:14)
E/flutter ( 2952): #22     _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:729:32)
E/flutter ( 2952): #23     GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
E/flutter ( 2952): #24     TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:365:11)
E/flutter ( 2952): #25     TapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:275:7)
E/flutter ( 2952): #26     PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:455:9)
E/flutter ( 2952): #27     PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:75:13)
E/flutter ( 2952): #28     PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:102:11)
E/flutter ( 2952): #29     GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:218:19)
E/flutter ( 2952): #30     GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:198:22)
E/flutter ( 2952): #31     GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7)
E/flutter ( 2952): #32     GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102:7)
E/flutter ( 2952): #33     GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86:7)
E/flutter ( 2952): #34     _rootRunUnary (dart:async/zone.dart:1136:13)
E/flutter ( 2952): #35     _CustomZone.runUnary (dart:async/zone.dart:1029:19)
E/flutter ( 2952): #36     _CustomZone.runUnaryGuarded (dart:async/zone.dart:931:7)
E/flutter ( 2952): #37     _invoke1 (dart:ui/hooks.dart:263:10)
E/flutter ( 2952): #38     _dispatchPointerDataPacket (dart:ui/hooks.dart:172:5)
E/flutter ( 2952): 
데이터베이스 생성중..
I/颤振(2952):데이터베이스 없음 , 초기화 시작
I/颤振(2952):초기화중
I/flatter(2952):/Users/landwhale/Person\u Pro\u file.db
E/flatter(2952):[ERROR:flatter/lib/ui/ui\u dart\u state.cc(148)]未处理的异常:数据库异常(open\u failed/Users/landwhale/Person\u Pro\u file.db)
E/flatter(2952):#0 wrapDatabaseException(包:sqflite/src/exception_impl.dart:11:7)
E/颤振(2952):
E/颤振(2952):#1 SqflitedDatabaseFactoryImpl.wrapDatabaseException(包:sqflite/src/factory\u impl.dart:29:7)
E/flatter(2952):#2 SqfliteDatabaseMixin.safeInvokeMethod(包:sqflite/src/database_mixin.dart:184:15)
E/flatter(2952):#3 SqfliteDatabaseMixin.openDatabase(包:sqflite/src/database_mixin.dart:519:15)
E/颤振(2952):
E/flatter(2952):#4 SqfliteDatabaseMixin.doOpen(包:sqflite/src/database_mixin.dart:612:28)
E/颤振(2952):
E/flatter(2952):#5 SqfliteDatabaseOpenHelper.openDatabase(包:sqflite/src/database.dart:32:22)
E/颤振(2952):
E/flatter(2952):#6 sqflitedDatabaseFactoryMixin.openDatabase。(包:sqflite/src/factory_mixin.dart:100:43)
E/颤振(2952):
E/颤振(2952):#7可重入锁定。已同步..(包:已同步/src/可重入锁定。dart:33:24)
E/flatter(2952):#8_rootRun(dart:async/zone.dart:1124:13)
E/flatter(2952):#9_CustomZone.run(dart:async/zone.dart:1021:19)
E/颤振(2952):#10_运行分区(dart:async/zone.dart:1516:10)
E/颤振(2952):#11运行分区(dart:async/zone.dart:1463:12)
E/颤振(2952):#12可重入锁定。已同步。(包:已同步/src/可重入锁定。省道:32:24)
E/颤振(2952):
E/flatter(2952):#13 BasicLock.synchronized(包:synchronized/src/basic_lock.dart:31:26)
E/颤振(2952):
E/flatter(2952):#14 ReentrantLock.synchronized(包:synchronized/src/reentrant_lock.dart:28:17)
E/颤振(2952):
E/flatter(2952):#15 SQflitedDatabaseFactoryMixin.openDatabase(包:sqflite/src/factory_mixin.dart:66:17)
E/Flatter(2952):#16开放数据库(包:sqflite/sqflite.dart:150:26)
E/flatter(2952):#17 DBHelper.initDB(包:socialapp/widgets/database_create.dart:36:18)
E/颤振(2952):
E/flatter(2952):#18 DBHelper.database(包:socialapp/widgets/database_create.dart:23:25)
E/颤振(2952):
E/flatter(2952):#19 DBHelper.createData(包:socialapp/widgets/database_create.dart:54:22)
E/颤振(2952):
E/flatter(2952):#20#writeprofile2State.onPressed(包:socialapp/page/writeprofile2.dart:192:18)
E/Flatter(2952):#21InkResponseEstate.handleTap(包装:Flatter/src/material/inkwell.省道:654:14)
E/flatter(2952):#22 34; InkResponseEstate.build.(包装:flatter/src/material/ink"well.dart:729:32)
E/flatter(2952):#23手势识别器.invokeCallback(包:flatter/src/signatures/recognizer.dart:182:24)
E/flatter(2952):#24拍子手势识别器。#检查(软件包:flatter/src/signatures/tap.dart:365:11)
E/颤振(2952):#25 TapGestureRecognitor.handlePr