2

我正在尝试创建一个包含三个字段的非常简单的应用程序,并且数据应该保存在 SQLite 数据库中。当我运行应用程序时

  1. 我收到错误消息"Error running app: Instant Run requires "Tools..Android..Enable ADB integration" to be enabled。我从菜单中进行了 ADB 集成,但每次运行应用程序时,都会显示此错误。我是否需要始终手动选择此选项?

  2. 当我按下应用程序中的按钮保存数据时,应用程序停止运行。我试图在 Android 设备监视器上检查数据库,但未创建数据文件夹。我在这个论坛上找到了一些相关的帮助,并且我已经完成了建议的配置(见下文):

adb shell su chmod 777 /data/data/com.example.application.sqliteappl 再次启动 cmd.. adb root adb root –restart

(我的包名是:com.example.application.sqliteappl)。

我假设我的应用程序停止运行,因为它无法创建 SQLite 数据库。有人知道我该如何解决这个问题吗?

我的应用程序中的代码很简单,我认为没有任何问题:

public class DatabaseHelper extends SQLiteOpenHelper {
    private static final String TAG = "MyMessage";
public static final String DATABASE_NAME = "Student.db";
    public static final String TABLE_NAME = "Student_table";
    public static final String COL_1 = "ID";
    public static final String COL_2 = "Name";
    public static final String COL_3 = "SURNAME";
    public static final String COL_4 = "MARKS";
    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, 1);
//        SQLiteDatabase db = this.getWritableDatabase();
    }
    @Override
    public void onCreate(SQLiteDatabase db) {
db.execSQL("create table " + TABLE_NAME +" (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, SURNAME TEXT, MARKS INTEGER)");
    }
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        db.execSQL("DROP TABKE IF EXITS "+TABLE_NAME);
        onCreate(db);
Log.i( TAG, "onUpgrade()");
    }

    public boolean insertData(String name, String surname, String marks){
        Log.i(TAG, "insertData()");
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contevalues = new ContentValues();

        contevalues.put(COL_2, name);
        contevalues.put(COL_3, surname);
        contevalues.put(COL_4, marks);
       long result = db.insert(TABLE_NAME, null, contevalues);
if (result == -1)
    return false;
      else
          return true;
    }
}

感谢所有关注它的人。

问候,

塔里克

4

0 回答 0