getWritableDatabase()出现空指针错误

k_c_u_f 2012-09-27 08:29:35
代码如下

...

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没有执行。



...全文
207 2 打赏 收藏 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
逛街的猫 2012-09-28
  • 打赏
  • 举报
回复
学习下!真心没有用过SQLies
ameyume 2012-09-27
  • 打赏
  • 举报
回复
DatabaseHelper mDBH;
mDBH只是做了声明,然后就拿来使用,肯定会报空指针了。
SQLiteDatabase db = mDBH.getWritableDatabase();
改成
SQLiteDatabase db = SQLiteOpenHelper.getWritableDatabase();
内容概要:本文基于Matlab/Simulink平台,对电励磁同步电机在异步牵入、稳态运行及能耗制动三个阶段的全周期动态特性进行建模仿真与系统研究。研究构建了完整的电机数学模型与仿真系统,重点分析了电机从异步启动到同步运行的过渡过程、稳态运行时的电磁与机械性能,以及执行能耗制动时的减速特性与能量耗散机理。通过仿真,揭示了励磁电流、负载转矩与转速在不同工况下的动态响应规律与耦合关系,为电机的控制策略设计与性能优化提供了理论依据和数据支持。; 适合人群:具备电机学、电力电子与电力拖动基础知识的电气工程及相关专业的研究生、科研人员与工程技术人员。; 使用场景及目标:①研究电励磁同步电机的启动特性,解决异步牵入过程不稳定或失败的问题;②分析电机在不同负载下的稳态运行性能,优化运行效率;③设计和验证能耗制动策略,精确控制制动过程的减速时间和能量消耗。; 阅读建议:在学习过程中,应结合电机的基本原理,深入理解仿真模型中各模块(如电机本体、励磁控制、负载模型)的搭建逻辑,并通过调整仿真参数(如励磁电压、负载大小)来观察和分析系统动态响应,以加深对电机全周期运行特性的理解。
内容概要:通过介绍短时倒谱(Cepstrogram)计算方法,开展时-倒频分析研究,深入探讨倒谱分析机理、短时倒谱构建逻辑及时-倒频分析的内涵。文中系统对比了时-倒频分析与全局倒谱、传统时频分析方法的差异,阐明其在卷积特征解耦、非平稳信号跟踪、微弱周期特征增强及多维特征融合方面的技术优势,并分析其在语音识别、机械故障诊断、音频处理和非平稳时序信号分析中的典型应用,同时指出其在分辨率、计算复杂度等方面的局限性并提出优化方向。; 适合人群:具备一定信号处理或数据分析基础,从事机械、通信、声学或自动化等领域研究的研发人员及研究生。; 使用场景及目标:① 掌握短时倒谱与时-倒频分析的理论基础与实现方法;② 应用于语音信号处理、机械设备故障诊断、音频相似性检测等工程实践;③ 对比传统方法,提升对复杂非平稳信号中隐含周期特征的识别能力; 阅读建议:此资源以Matlab代码实现为核心,强调理论与实践结合,建议读者在理解核心算法原理的基础上,动手运行代码并调试参数,结合具体应用场景深化对方法适用性与局限性的认识。

80,489

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧