2012-11-17 36 views
0

我正在学习如何在Android活动中使用sql数据库。我从this tutorial了解到。我有一个在本教程中使用数据库处理程序的活动。 我在活动类中声明了变量。在android活动中使用数据库

DatabaseHandler db; 

在onCreate方法创建一个新的数据库处理器对象:

DatabaseHandler db = new DatabaseHandler(this); 

我想使用的数据库按钮被点击之后。所以我在onClick方法中使用连接,但是我得到一个空指针异常,除非我在onclick中创建一个新对象。为什么是这样呢,在不同类型的对象中,我可以像在这个例子中那样声明变量。

的数据库处理器的构造是:

public DatabaseHandler(Context context) { 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
} 

超是SQLiteOpenHelper。

回答

1

由于实例化不正确,您将得到null异常。你宣布你的分区字段,但然后实例化一个不同对象DatabaseHandler db = new DatabaseHandler(this); < - 作为一个局部变量。因此,您的onClick只能访问未经证实的字段。要解决你需要在你的创建中替换你所拥有的。

db = new DatabaseHandler(this); 

或者如果onClick在onCreate中,通过应用最终修饰符。 (并删除现场对象)

+0

谢谢。多么愚蠢的错误。 –

+0

@mango如何使用'db = new DatabaseHandler(this);'出于任何活动,如自定义类与数据库一起工作? –