我创建了一个SQLite,以及操作数据库的类,代码如下
(这是数据库类)
public class account extends SQLiteOpenHelper {
private static final int VERSION = 1;// 定义数据库版本号
private static final String DBNAME = "account.db";// 定义数据库名
public account(Context context){// 定义构造函数
super(context, DBNAME, null, VERSION);// 重写基类的构造函数
}
@Override
public void onCreate(SQLiteDatabase db){// 创建数据库
db.execSQL("create table tb_pname(id INTEGER PRIMARY KEY AUTOINCREMENT,packageName varchar(20))");// 创建表,表的一列为packageName,一列为主键id,id的值可递增
//db.execSQL("create table tb_pwd (password varchar(20))");//创建密码表
}
(这是数据库操作类)
public class PwdDAO {
private static PwdDAO pwdDAO=null;
Context context;
private account helper=new account(context);// 创建DBOpenHelper对象
private static final String USER_TABLE="tb_pname";
public static PwdDAO getInstance(){
if(pwdDAO==null){
pwdDAO=new PwdDAO();
}
return pwdDAO;
}
public account getHelper(){
return helper;
}
但当执行语句 SQLiteDatabase db = PwdDAO.getInstance().getHelper().getWritableDatabase(); 程序报错被强退,logcat中的错误如下
检查操作数据库的相关源代码,确认在退出前关闭了游标及数据库对象。
那还抛出未关闭的错误是怎么回事呢?继续检查发现,抛出此错误之前,在操作数据库过程中还抛出了另外的一个错误。
原来在抛出第一个错误以后,关闭操作未执行,导致再次操作数据库时抛出“应用程序没有关闭游标或数据库对象”的错误。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。