在CentOS系統下使用Flutter進行數據庫操作,通常會選擇SQLite作為本地數據庫。以下是在Flutter中使用SQLite進行數據庫操作的基本步驟:
首先,在pubspec.yaml文件中添加sqflite和path_provider依賴:
dependencies:
flutter:
sdk: flutter
sqflite: ^2.0.0+4
path_provider: ^2.0.2
然后運行flutter pub get命令來安裝這些依賴。
創建一個數據庫幫助類,用于初始化數據庫和創建表:
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
import 'package:sqflite/sqflite.dart';
class DatabaseHelper {
static final _databaseName = "my_database.db";
static final _databaseVersion = 1;
static final table = 'my_table';
static final columnId = 'id';
static final columnTitle = 'title';
// Make this a singleton class.
DatabaseHelper._privateConstructor();
static final DatabaseHelper instance = DatabaseHelper._privateConstructor();
// Only have a single app-wide reference to the database.
static Database? _database;
Future<Database> get database async => _database ??= await _initDatabase();
// Open the database and create the table if it doesn't exist.
_initDatabase() async {
Directory documentsDirectory = await getApplicationDocumentsDirectory();
String path = join(documentsDirectory.path, _databaseName);
return await openDatabase(path,
version: _databaseVersion, onCreate: _onCreate);
}
// SQL code to create the database table.
Future _onCreate(Database db, int version) async {
await db.execute('''
CREATE TABLE $table (
$columnId INTEGER PRIMARY KEY,
$columnTitle TEXT NOT NULL
)
''');
}
// Helper methods to insert, update, delete and query the database.
// ...
}
Future<int> insert(Map<String, dynamic> row) async {
Database db = await instance.database;
return await db.insert(table, row);
}
Future<List<Map<String, dynamic>>> query(Map<String, dynamic> query) async {
Database db = await instance.database;
return await db.query(table, where: query);
}
Future<int> update(Map<String, dynamic> row, String whereClause, List<String> whereArgs) async {
Database db = await instance.database;
return await db.update(table, row, where: whereClause, whereArgs: whereArgs);
}
Future<int> delete(String whereClause, List<String> whereArgs) async {
Database db = await instance.database;
return await db.delete(table, where: whereClause, whereArgs: whereArgs);
}
在你的Flutter應用中,你可以這樣使用DatabaseHelper類:
void main() async {
WidgetsFlutterBinding.ensureInitialized();
DatabaseHelper dbHelper = DatabaseHelper.instance;
// Insert data
await dbHelper.insert({'title': 'Hello, World!'});
// Query data
List<Map<String, dynamic>> results = await dbHelper.query({'title': 'Hello, World!'});
print(results);
// Update data
await dbHelper.update({'title': 'Hello, Flutter!'}, 'title = ?', ['Hello, World!']);
// Delete data
await dbHelper.delete('title = ?', ['Hello, Flutter!']);
}
以上步驟展示了如何在CentOS系統下使用Flutter進行SQLite數據庫的基本操作。根據你的需求,你可以擴展DatabaseHelper類,添加更多的查詢方法和功能。