Android Sqlite数据库静态/非静态等

时间:2015-06-07 10:04:43

标签: java android database sqlite

我对Android上sqlite数据库的使用有疑问。 我遇到的主要问题是错误'无法从静态上下文引用'

基本上我有不同的类需要访问数据库,因此我认为数据库应该是静态的。问题是如何在MainActivity中初始化数据库?

  <?php 
class artist_model extends CI_Model {
    function getAll(){

        $q  = $this->db->query("SELECT artist_discography,artist_name from music");

        if($q->num_rows() > 0) {

            foreach ($q->result() as $row) {
                $data [] = $row;
            }
            return $data;
        }

    }
}

我的数据库类(主要来自google sql教程)

public class MainActivity extends BlunoLibrary {

//start db//

public static StoredValuesDBHelper StoredValuesDB =  new StoredValuesDBHelper(this);
public static SQLiteDatabase db = StoredValuesDB.getWritableDatabase();
....
}

非常感谢任何帮助!

我在java和android编程方面几乎没有经验

1 个答案:

答案 0 :(得分:0)

避免Android上的任何静态字段(有一些例外)。操作系统可以卸载您的类,并且您可以释放任何静态值。在这个特殊情况下,我使用:

public class MyApp extends Application {
    private static MyDb db;

    @Override
    public void onCreate() {
        super.onCreate();
        if (db == null) {
            /* use application context here */
            db = new MyDb(this.getApplicationContext());
        }
    }

    public MyDb getDb() {
        return db;
    }
}

然后在你的清单中:

<application
        android:name=".MyApp"
    ..............

当你需要db:

MyDb mydb = ((MyApp)getApplicationContext()).getDB();