Android 我的数据库出现问题:“递归调用getDatabase”

Android 我的数据库出现问题:“递归调用getDatabase”,android,android-sqlite,Android,Android Sqlite,我正在用android studio创建一个sqlite数据库。我的应用程序在调用我的方法Insertprofile时关闭;在我看来 你能帮我找到问题吗? 《现在该怎么办?》Android设备监视器在Android Studio 3.1中被弃用,现在已从Android Studio 3.2中删除。 我的数据库管理员: 我的主要意见是: } 我的类profil只是一个简单的类,带有getter、setter和构造函数 和我的错误日志: PS:我是法国人,英语不好。尝试修改下面的方法,使用Conte

我正在用android studio创建一个sqlite数据库。我的应用程序在调用我的方法Insertprofile时关闭;在我看来

你能帮我找到问题吗? 《现在该怎么办?》Android设备监视器在Android Studio 3.1中被弃用,现在已从Android Studio 3.2中删除。 我的数据库管理员:

我的主要意见是:

}

我的类profil只是一个简单的类,带有getter、setter和构造函数

和我的错误日志:


PS:我是法国人,英语不好。

尝试修改下面的方法,使用ContentValue对象可以在SQLite数据库中插入数据

   //add below line inside your DatabaseManager class method in onUpgrade()
    db.execSQL("DROP TABLE IF EXISTS User");


   // the below method will return boolean method
   public boolean insertProfil( int mission, int day ) {
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put("mission", mission);
    contentValues.put("day", day);
    long result = db.insert("User", null, contentValues);
    if (result == -1)
        return false;
    else
        return true;
}

 // call above method from your activity
  boolean status=databaseManager.insertProfil( 2,6);
  if(status){
   Log.d("insert_","success");
 }else{
   Log.d("insert_","fail");
 }

尝试将insertProfil方法更改为

public void insertProfil(int mission, int day, SQLiteDatabase db)
…然后在onCreate中。。。只需将db参数传递给它并更改此行

this.getWritableDatabase().execSQL( strSql );
你的代码应该是这样的

public void insertProfil(int mission, int day, SQLiteDatabase db) {
    //name = name.replace( "'", "''" );
    String strSql = "INSERT INTO User (mission, day) VALUES ("
            + mission + ", " + day + ")";
    db.execSQL( strSql );
    Log.i( "DATABASE", "insertScore invoked" );
}

现有代码中的问题是onCreate。。。正在传递对开放/可写数据库的引用,但它随后调用insertProfil。。。尝试获取另一个数据库的可写引用。

发布错误日志。完成后,是否可以查看Post。首先卸载现有应用,然后尝试新安装是的,可以!t再次出现问题。如果要更改数据库表,请不要忘记增加数据库版本号。是。但新问题比我调用profil.getMission时更严重;在我看来。看看下面。
public void insertProfil(int mission, int day, SQLiteDatabase db)
this.getWritableDatabase().execSQL( strSql );
public void insertProfil(int mission, int day, SQLiteDatabase db) {
    //name = name.replace( "'", "''" );
    String strSql = "INSERT INTO User (mission, day) VALUES ("
            + mission + ", " + day + ")";
    db.execSQL( strSql );
    Log.i( "DATABASE", "insertScore invoked" );
}