![](/img/trans.png)
[英]android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked using fragments
[英]How to change SQLite database path to different folder (in application directory) using SQliteOpenhelper :android project
我目前正在研究 Android 项目,它有一个 SQLite 数据库。 我之前使用 flutter 创建了数据库,并使用下面的代码来获取创建数据库的路径。
// Get the directory path for both Android and iOS to store database.
Directory directory = await getApplicationDocumentsDirectory();
String path = directory.path + '/ideaDatabase.db';
它指向路径
/data/data/com.example.myprojet01/app_flutter/ideaDatabase.db
根据我的要求,我必须为项目添加 android 特定代码(Java)。 我不得不从 java 和 dart 部分在数据库上方添加数据/访问。 任何人都可以帮助我如何从 Java 访问数据库。 我正在使用 SQliteOpenhelper 类来访问数据库。
SQLiteopenhelper 默认在创建数据库
/data/data/com.example.myprojet01/databases/ideaDatabase.db
是否可以指定 SQliteopenhelper 从 /app_flutter/ 目录而不是 /databases/. 打开数据库?
代码 java 数据库助手
public class Database_Helper_widget extends SQLiteOpenHelper {
public static final String TAG="Database_Helper_widget";
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "ideaDatabase.db";
public Database_Helper_widget(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CreateTable=MycreateString;
db.execSQL(CreateTable);
}
代码颤振:
Future<Database> initializeDatabase() async {
// Get the directory path for both Android and iOS to store database.
Directory directory = await getApplicationDocumentsDirectory();
String path = directory.path + '/ideaDatabase.db';
debugPrint('path to database $path');
// Open/create the database at a given path
var ideaDatabase =
await openDatabase(path, version: 1, onCreate: _createDb);
return ideaDatabase;
}
注意:回答我自己的问题,不是完美的解决方案,而是我暂时使用的解决方法。 如果您有更好的解决方案,请改进此答案或添加新答案。
而不是使用应用程序目录文件夹(Flutter)来存储数据库。 我正在使用 "getDatabasesPath()" 。 这样Android特定代码和Flutter代码都指向Android中的同一个数据库文件夹(不确定IOS)
这指向您的数据库位置:
/data/data/com.example.myprojet01/databases/ideaDatabase.db
这与 java 中由 SQliteOpenHelper 类创建的默认数据库位置相同。
Future<Database> initializeDatabase() async {
// Get the directory path for both Android and iOS to store database.
// Directory directory = await getApplicationDocumentsDirectory();
String databasePath = await getDatabasesPath();
String path = databasePath + '/ideaDatabase.db';
// Open/create the database at a given path
var ideaDatabase =
await openDatabase(path, version: 1, onCreate: _createDb);
return ideaDatabase;
}
如果您想从 Android 特定代码和 Flutter 代码访问公共数据库,则此方法有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.