gpt4 book ai didi

java - Android:如何创建数据库管理类的对象然后使用它?

转载 作者:行者123 更新时间:2023-12-01 13:15:41 25 4
gpt4 key购买 nike

我正在开发一个 Android 项目,其中我有一个应用程序的中央数据库,可以从同一应用程序内的不同 Activity 访问/输入该数据库。当谈到 Android 时,我仍然是一个菜鸟,并且遵循了各种教程,但只是让自己稍微陷入困境:/

我遇到的问题是这样的,如果下面发布的代码是我的“基”类,即我将通过对象和方法访问的类,我如何创建一个对象使用正确的参数才能使其工作?

我尝试使用以下语法在不同的类中创建 DatabaseAdmin 类的对象:DatabaseAdmin db = new DatabaseAdmin();但它说我需要添加参数 context。当我输入参数时:DatabaseAdmin db = new DatabaseAdmin(getApplicationContext());该应用程序不断强制关闭并出现多个错误,因此我认为这不是解决方案。

想法?如何创建一个对象,该对象可以访问此类及其可用的所有相应方法,然后我需要执行任何异常操作才能使用/调用它吗?

(PS,抱歉,如果我包含了太多代码,试图将其削减,不确定是否有重要的事情可能是线索。如果代码太多,请告诉我,我会进一步削减)

这是我的代码:

    //imports Cropped for space saving
//This class manages the database for the entire application

public class DatabaseAdmin extends Activity
{
DatabaseHelper dbhelper;
Context ctx;

//Create an object of the SQLite database which we can use to open and close it
SQLiteDatabase db;

//SQL Variables
public static final String TABLE_NAME = "table";
public static final String COLUMN_NAME_AT_RISK = "at_risk";
public static final String TEXT_TYPE = " TEXT";
public static final String COMMA = ",";

//String to create the database
public static final String SQL_CREATE_DATABASE =
"CREATE TABLE " +
TABLE_NAME + " (" +
COLUMN_NAME_AT_RISK + " REAL 1417"
" )";

public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "RSRToolbox.db";

public DatabaseAdmin(Context ctx) {

this.ctx = ctx;
dbhelper = new DatabaseHelper(ctx);
}

//DatabaseHelper
private class DatabaseHelper extends SQLiteOpenHelper {

//Constructor for DatabaseHelper
public DatabaseHelper(Context ctx) {
super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
}

public void onCreate(SQLiteDatabase db) {
//Creates database
try {
db.execSQL(SQL_CREATE_DATABASE);
} catch (Exception e) {
e.printStackTrace();
}
}

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

db.execSQL("DROP TABLE IF EXIST commissions");
onCreate(db);
}

public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}

//Method to open the database
public DatabaseAdmin openDB(){
db = dbhelper.getWritableDatabase();
return this;
}

//Method for closing the database
public void closeDB(){
dbhelper.close();
}

//Method to insert data into the database
public long InsertData(String column_name, String value){

ContentValues content = new ContentValues();
content.put(column_name, value);
return db.insertOrThrow(TABLE_NAME, null, content);
}

public Cursor getData(String[] column_name){

return db.query(TABLE_NAME, column_name, null, null, null, null, null);
}
}

最佳答案

尝试使用单例模型:

您的应用程序类(在 list 中注册):

class MyApp extends Application {
private static MyApp mInstance;

void onCreate() {
mInstance = this;
}

public Context context() { return mInstance.getApplicationContext(); }

}

您的数据库类:

public MyDatabase {

public final MyDatabase INSTANCE = new MyDatabase();

private DbHelper mHelper;

public Cursor someMyQuery() {
return mHelper.query(...);
}

private MyDatabase() {
mHelper = new DbHelper(MyApp.context());
...
}

private static class DbHelper extends SQLiteOpenHelper {
onCreate() {...}
onUpdate() {...}
}

}

然后从任何地方访问您的数据库:

MyDatabase.INSTANCE.someMyQuery();

关于java - Android:如何创建数据库管理类的对象然后使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22495404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com