我对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编程方面几乎没有经验
答案 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();