Java Android:如何创建数据库管理类的对象并使用它?
我正在从事一个Android项目,我有一个应用程序的中央数据库,可以从同一个应用程序中的不同活动访问/输入该数据库。谈到Android,我仍然有点不懂装懂,并且已经学习了各种教程,但只是让自己有点困惑:/ 我遇到的问题是这样的,如果下面发布的代码是我的“基本”类,我将通过对象和方法使用该类进行访问,那么如何创建具有正确参数的对象以使其正常工作 我尝试使用以下语法在另一个类中创建DatabaseAdmin类的对象: DatabaseAdmin db=新建DatabaseAdmin(); 但它是说我需要添加参数context。 当我输入参数为: DatabaseAdmin db=newdatabaseadmin(getApplicationContext()); 该应用程序保持强制关闭,并出现多个错误,因此我认为这不是解决方案 想法?我如何创建一个对象,该对象将使用所有可用的方法访问该类,然后,我是否需要执行任何异常操作来利用/调用它 (请注意,如果我包含了太多的代码,请道歉,我试图将其精简,但不确定是否有重要的内容,这可能是一个线索。如果代码太多,请让我知道,我将进一步精简) 这是我的密码:Java Android:如何创建数据库管理类的对象并使用它?,java,android,database,sqlite,Java,Android,Database,Sqlite,我正在从事一个Android项目,我有一个应用程序的中央数据库,可以从同一个应用程序中的不同活动访问/输入该数据库。谈到Android,我仍然有点不懂装懂,并且已经学习了各种教程,但只是让自己有点困惑:/ 我遇到的问题是这样的,如果下面发布的代码是我的“基本”类,我将通过对象和方法使用该类进行访问,那么如何创建具有正确参数的对象以使其正常工作 我尝试使用以下语法在另一个类中创建DatabaseAdmin类的对象: DatabaseAdmin db=新建DatabaseAdmin(); 但它是说我
//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);
}
}
尝试使用单例模型: 您的应用程序类(在清单中注册): 您的数据库类:
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();
删除此项:
扩展活动
。不会的。我会的,谢谢。非常好的信息。非常感谢!
MyDatabase.INSTANCE.someMyQuery();