在更新和删除SQLite数据库时报错NullPointerException-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

在更新和删除SQLite数据库时报错NullPointerException

2016-07-18 14:19:21 2457 1

我的Activity首先打开了数据库。
private DBAdapter dbAdepter;

dbAdepter = new DBAdapter(this);

dbAdepter.open();

然后更新操作如下:
public class Heimingdan_Alter extends Activity {

private DBAdapter dbAdepter;

private EditText editname;
private EditText edittelephone;
private Button update1;
private Button delete;

private String name,phone,id,name0,telephone0;
//public int id;
public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);
 //设置无标题
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.fix_blacklist);

dbAdepter = new DBAdapter(this);
dbAdepter.open();
//MyApplication.getInstance().addActivity(this);
editname=(EditText)findViewById(R.id.hmd_name);
edittelephone=(EditText)findViewById(R.id.hmd_num);
update1=(Button)findViewById(R.id.ensure);
delete=(Button)findViewById(R.id.delete);

Intent i = getIntent();
telephone0=i.getStringExtra("telephone");
name0=i.getStringExtra("name");
id=i.getStringExtra("id");

editname.setText(i.getStringExtra("name"));
edittelephone.setText(i.getStringExtra("telephone"));

//更新事件
update1.setOnClickListener(new OnClickListener() {
    public void onClick(View arg0) {
        name=editname.getText().toString();
        phone=edittelephone.getText().toString();
        if(name.equals("")||phone.equals("")){
            Toast.makeText(Heimingdan_Alter.this, "您输入的信息不完整哦~",Toast.LENGTH_LONG).show();
        }
        else {
            BlackNumber blacknumber = new BlackNumber();
            BlackNumber blacknumber2 = new BlackNumber();
            blacknumber.telephone = phone;
            blacknumber.name = name;
            Log.v("更新的黑名单值", blacknumber.telephone+blacknumber.name);

            blacknumber2.telephone = telephone0;
            blacknumber2.name = name0;
            Log.v("以前的黑名单值", blacknumber2.telephone+blacknumber2.name);
                dbAdepter.updateblack(id,blacknumber,blacknumber2);
            onBackPressed();
            Toast.makeText(Heimingdan_Alter.this, "修改成功!", Toast.LENGTH_LONG).show();
        }
    }
});

}
然后在DBAdapter.java中如下
public void open() throws SQLiteException {

try {
    db = dbOpenHelper.getWritableDatabase();
    Log.v("DBAdapter_Open_getWritableDatabase",
            "DBAdapter_Open_getWritableDatabase");
} catch (SQLiteException ex) {
    db = dbOpenHelper.getReadableDatabase();
    Log.v("DBAdapter_Open_getReadableDatabase",
            "DBAdapter_Open_getReadableDatabase");
}

}
public int updateblack(String id,BlackNumber blacknumber, BlackNumber blacknumber2) {

ContentValues newValues = new ContentValues();
Log.e("updateblack",blacknumber.name + blacknumber.telephone+ "from"  + blacknumber2.telephone);
newValues.put("name", blacknumber.name);
newValues.put("telephone", blacknumber.telephone);

int _id=Integer.parseInt(id);

int colunm = db.update("blacklist", newValues, "_id" + "=" + _id , null);
Log.e("updateblacksuccess", blacknumber.name + ":" + blacknumber.telephone
        + "from"  + blacknumber2.name);
return colunm;

}
其中BlackNumber是一个含有两个String(name,telephone)和一个int(id)的类。
每次调试都说是
int colunm = db.update("blacklist", newValues, "_id" + "=" + _id , null);
这一行出错。
但是调试log信息表示id得到了也是对的。blacklist名字也没错。这一行我加到插入的方法里就好使,但是到这里就报错。是个什么问题?
求大神

取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 19:57:50

    输出下你的 db, blacknumber, blacknumber2 三个对象,检查下是否为空

    0 0
相关问答

1

回答

Java中Exception使用时,有什么要求吗?

2022-04-03 22:39:54 524浏览量 回答数 1

1

回答

HEXO 博客AMLException报错

2021-10-24 19:50:07 792浏览量 回答数 1

1

回答

Exception是什么?代表什么意思?

2021-10-26 17:20:21 420浏览量 回答数 1

1

回答

描述下Java语言中,Exception类的层次

2021-01-08 14:10:39 326浏览量 回答数 1

1

回答

c# COMException,没有注册类?报错

2020-06-22 12:50:08 1378浏览量 回答数 1

1

回答

SFTP报错,JSchException: Algorithm negotiat?报错

2020-06-09 13:08:08 483浏览量 回答数 1

1

回答

Mybatis 通用Mapper ClassCastException?报错

2020-06-08 19:45:14 323浏览量 回答数 1

1

回答

[SqlException (0x80131904): TCP 提供程序: 请求的名称有效报错

2020-06-06 14:50:09 317浏览量 回答数 1

1

回答

遇到 NoInitialContextException 怎么解决?java报错

2020-05-27 11:31:02 340浏览量 回答数 1

2

回答

ECS除80端口可以访问,其他1433、8800端口不能访问

2018-08-27 10:37:51 979浏览量 回答数 2
+关注
文章
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载