代码如下...public class broad extends BroadcastReceiver{
...
// 数据库变量
DatabaseHelper mDBH;
public static final String DATABASE_NAME = "power.db";
public static final int DATABASE_VERSION = 1;
public static final String TABLE_NAME = "power";
public static final String DATE = "date";
public static final String TIME = "time";
public static final String POWER = "power";
public static final String STATUS = "status";
public static String strSql;
// 数据库类
private static class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
Log.i("Orange:DatabaseHelper=", "OK");
}
// 没有数据表时,建立数据表
@Override
public void onCreate(SQLiteDatabase db) {
Log.i("Orange:createDB1=", "OK");
strSql = "CREATE TABLE " + TABLE_NAME + " (" + DATE
+ " text not null, " + TIME + " text not null, " + POWER
+ " int not null, " + STATUS + " text not null" + ");";
Log.i("Orange:createDB2=", strSql);
db.execSQL(strSql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
} public void onReceive(Context context, Intent intent)
{
Log.i("Orange=", "119");
// 读取数据库
rdTbl(); } private void rdTbl() {
// 获得可写数据库
Log.i("Orange=", "120");
SQLiteDatabase db = mDBH.getWritableDatabase();
Log.i("Orange=", "121");
// 查询数据库
String[] col = new String[]{DATE, POWER, STATUS};
Cursor cur = db.query(TABLE_NAME, col, null, null, null, null, null);
Log.i("Orange=", "122");
...
每次执行到Log.i("Orange=", "120");就出错不执行了,然后提示09-27 12:19:01.994: E/AndroidRuntime(471): java.lang.RuntimeException: Unable to start receiver com.example.powm.broad: java.lang.NullPointerException就是空指针错误吧?而且Log.i("Orange:DatabaseHelper=", "OK");和Log.i("Orange:createDB2=", strSql);根本没有执行,就是说DatabaseHelper类的构造函数和onCreate没有执行。
...
// 数据库变量
DatabaseHelper mDBH;
public static final String DATABASE_NAME = "power.db";
public static final int DATABASE_VERSION = 1;
public static final String TABLE_NAME = "power";
public static final String DATE = "date";
public static final String TIME = "time";
public static final String POWER = "power";
public static final String STATUS = "status";
public static String strSql;
// 数据库类
private static class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context){
super(context, DATABASE_NAME, null, DATABASE_VERSION);
Log.i("Orange:DatabaseHelper=", "OK");
}
// 没有数据表时,建立数据表
@Override
public void onCreate(SQLiteDatabase db) {
Log.i("Orange:createDB1=", "OK");
strSql = "CREATE TABLE " + TABLE_NAME + " (" + DATE
+ " text not null, " + TIME + " text not null, " + POWER
+ " int not null, " + STATUS + " text not null" + ");";
Log.i("Orange:createDB2=", strSql);
db.execSQL(strSql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
} public void onReceive(Context context, Intent intent)
{
Log.i("Orange=", "119");
// 读取数据库
rdTbl(); } private void rdTbl() {
// 获得可写数据库
Log.i("Orange=", "120");
SQLiteDatabase db = mDBH.getWritableDatabase();
Log.i("Orange=", "121");
// 查询数据库
String[] col = new String[]{DATE, POWER, STATUS};
Cursor cur = db.query(TABLE_NAME, col, null, null, null, null, null);
Log.i("Orange=", "122");
...
每次执行到Log.i("Orange=", "120");就出错不执行了,然后提示09-27 12:19:01.994: E/AndroidRuntime(471): java.lang.RuntimeException: Unable to start receiver com.example.powm.broad: java.lang.NullPointerException就是空指针错误吧?而且Log.i("Orange:DatabaseHelper=", "OK");和Log.i("Orange:createDB2=", strSql);根本没有执行,就是说DatabaseHelper类的构造函数和onCreate没有执行。
解决方案 »
- This handler class should be static or leaks might occur
- 搞android的同行来说说android工程师的待遇吧
- Error generating final archive怎么解决
- 写Android录像程序碰到的几个问题,请高手解答
- android SDK 4.0 模拟器调试问题
- 【求助】安卓GridView动态添加IamgeView组件,如何给Imageview动态添加文字?
- 如何获取otg连接线插入的u盘路径?
- 求助:android 删除 GPS 辅助定位信息的API是哪个?
- PC上的adb如何与手机上的adbd交互
- android 身份证拍照后进行图片识别,抓取身份证信息
- 编译Android4.1,出现 java.lang.OutOfMemoryError问题!!!小妹求赐教!
- 如何实现关机和重启
mDBH只是做了声明,然后就拿来使用,肯定会报空指针了。
SQLiteDatabase db = mDBH.getWritableDatabase();
改成
SQLiteDatabase db = SQLiteOpenHelper.getWritableDatabase();