Java &引用;调用Landroid/database/sqlite/SQLiteOpenHelper;时堆栈溢出&书信电报;初始化>;:VLLLI“;
Android开发和Java都是新手,尝试将我的查询分离为从数据库管理QueryBase.Java文件继承的查询/命令文件。当我运行应用程序时,出现以下错误: QueryBase上的第18行是:Java &引用;调用Landroid/database/sqlite/SQLiteOpenHelper;时堆栈溢出&书信电报;初始化>;:VLLLI“;,java,android,sqlite,Java,Android,Sqlite,Android开发和Java都是新手,尝试将我的查询分离为从数据库管理QueryBase.Java文件继承的查询/命令文件。当我运行应用程序时,出现以下错误: QueryBase上的第18行是: super(context, DATABASE_NAME, null, DATABASE_VERSION); 从QueryBase继承的示例命令文件如下所示: public class QueryBase extends SQLiteOpenHelper { private static fina
super(context, DATABASE_NAME, null, DATABASE_VERSION);
从QueryBase继承的示例命令文件如下所示:
public class QueryBase extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "icantalk.db";
private static final int DATABASE_VERSION = 1;
protected SQLiteDatabase sqdb;
protected QueryBase sqh;
public QueryBase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.sqh = new QueryBase(context);
this.sqdb = sqh.getWritableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
public class ChildCommands extends QueryBase {
public ChildCommands(Context context) {
super(context);
}
public long addChild(String name)
{
ContentValues cv = new ContentValues();
cv.put(ChildrenTable.NAME, name);
SQLiteDatabase sd = super.getWritableDatabase();
long result = sd.insert(ChildrenTable.TABLE_NAME, ChildrenTable.NAME, cv);
return result;
}
}
此方法的示例调用如下所示:
private ChildCommands command;
.....
this.command = new ChildCommands(this);
command.addChild(childsNameValue);
这将导致在创建QueryBase的新对象时创建QueryBase的新对象。这是一个永无止境的电话
使用以下命令:
public QueryBase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.sqh = this;
this.sqdb = sqh.getWritableDatabase();
}
编辑:顺便说一句,
sqh
不需要,因为这个变量包含它所在的同一个实例(非静态!),所以sqh==this
…ahh我完全忽略了这一点,在构造函数gargh中创建了一个新实例。谢谢,我会试一试的!
public QueryBase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.sqh = new QueryBase(context);
this.sqdb = sqh.getWritableDatabase();
}
public QueryBase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.sqh = this;
this.sqdb = sqh.getWritableDatabase();
}