Flutter sqflite 사용 - 테이블 구조 업그레이드
sqflite는 경량급 데이터베이스로 SQLite와 유사하다.Flutter 플랫폼에서 우리는 sqflite 라이브러리를 사용하여 안드로이드와 iOS를 동시에 지원합니다.sqflite는 테이블 구조의 업그레이드를 지원할 수 있습니다.
1、pubspec.yaml 라이브러리 가져오기
#
sqflite: ^1.3.0
#
path_provider: ^1.5.0
2, 가져오기 헤더 파일
import 'package:sqflite/sqflite.dart'; import 'package:path/path.dart’;
3. 흔한 필드의 정의
//
final _version = 2;
//
final _name = "DataBase.db";
//
final _table = "SearchTable";
//
final _userId = "userId";
final _nickName = "nickName";
final _mobile = "mobile";
//
final _sex = "sex”;
4、데이터베이스 만들기name
ATQueue.internal();
//
static Database _database;
Future get database async {
if (_database == null) {
var databasesPath = await getDatabasesPath();
String path = join(databasesPath, _name);
_database = await openDatabase(path,version: _version,onCreate: _onCreate,onUpgrade:_onUpgrade);
}
return _database;
}
5、테이블 생성table
//
void _onCreate(Database db,int version) async{
print("createTable version $version");
final sql = '''
create table if not exists $_table (
$_userId integer primary key,
$_nickName text not null,
$_mobile text not null,
$_sex text)
''';
var batch = db.batch();
batch.execute(sql);
await [batch.commit();](http://batch.commit();/)
}
// sex ,
void _onUpgrade(Database db, int oldVersion, int newVersion) async{
if (oldVersion < 2){
var batch = db.batch();
print("updateTable version $oldVersion $newVersion");
batch.execute('alter table $_table add column $_sex text');
await [batch.commit();](http://batch.commit();/)
}
// if (oldVersion < 2){
// var batch = db.batch();
// try{
// final sal = 'select $_sex from $_table';
// await db.rawQuery(sal);
// }catch (error){
// print(error);
// print("======================");
// batch.execute('alter table $_table add column $_sex text');
// await [batch.commit();](http://batch.commit();/)
// // sex
// }
// }
}
6, 열기, 데이터베이스 닫기
//
Future open() async{
return await database;
}
///
Future close() async {
var db = await database;
return db.close();
}
7. 데이터 삽입 일반 삽입/사무 삽입
static Future insertData(int userId,String nickName,String mobile,{String sex = " "}) async{
Database db = await ATQueue.internal().open();
//1、
//await db.rawInsert("insert or replace into $_table ($_userId,$_nickName,$_mobile,$_sex) values (?,?,?,?)",[userId,nickName,mobile,sex]);
//2、
db.transaction((txn) async{
txn.rawInsert("insert or replace into $_table ($_userId,$_nickName,$_mobile,$_sex) values (?,?,?,?)",[userId,nickName,mobile,sex]);
});
await db.batch().commit();
}
8. 데이터 수정 일반 제출/사무 제출
static Future updateData(int userId,String nickName,String mobile) async{
Database db = await ATQueue.internal().open();
//1、
// await db.rawUpdate("update $_table set $_nickName = ?,$_mobile = ? where $_userId = ?",[nickName,mobile,userId]);
//2、
db.transaction((txn) async{
txn.rawUpdate("update $_table set $_nickName = ?,$_mobile = ? where $_userId = ?",[nickName,mobile,userId]);
});
await db.batch().commit();
}
9. 데이터 삭제 일반 제출/사무 제출
static Future deleteData(int userId) async{
Database db = await ATQueue.internal().open();
//1、
//await db.rawDelete("delete from $_table where $_userId = ?",[userId]);
//2、
db.transaction((txn) async{
txn.rawDelete("delete from $_table where $_userId = ?",[userId]);
});
await db.batch().commit();
}
10. 데이터 조회 단일 조회 모든 조회 페이지 조회
static Future searchData(int userId) async {
Database db = await ATQueue.internal().open();
List
11. 사용 방법
ATUserQueue.insertData(110, " ", "15160023363”);
ATUserQueue.updateData(110, " ", "15280592811”);
ATUserQueue.searchDatas();
ATUserQueue.deleteData(110);
12. 주의
표 구조의 업그레이드와 관련이 있기 때문이다.모든 이쪽에는 두 가지 버전 번호가 있어요. 1과 2, 1 버전.
final _userId = "userId";
final _nickName = "nickName";
final _mobile = "mobile";
그래서 표를 만들 때도 이 세 개의 필드만 있고 삽입할 때도 세 개의 필드만 있다는 것을 주의해야 한다.
final sql = '''
create table if not exists $_table (
$_userId integer primary key,
$_nickName text not null,
$_mobile text not null
''';
2 버전 번호가 sex가 하나 더 생겼어요.
final _userId = "userId";
final _nickName = "nickName";
final _mobile = "mobile";
//
final _sex = "sex”;
그래서 표를 만들 때도 이 네 개의 필드가 있고 삽입할 때도 네 개의 필드가 있다는 것을 주의해야 한다.
final sql = '''
create table if not exists $_table (
$_userId integer primary key,
$_nickName text not null,
$_mobile text not null,
$_sex text)
''';
시계 업그레이드와 관련이 있기 때문에 오래된 버전 번호가 지정된 버전 번호 2보다 작을 때 업그레이드를 촉발하는 방법입니다. 물론 2라는 버전 번호에 설치하면 오래된 버전 번호가 없으면 업그레이드를 촉발하지 않고 4개의 필드의 시계를 직접 만듭니다.잘 못 썼으니 양해해 주십시오
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.