SQLite数据库未创建

时间:2017-09-16 11:28:49

标签: android android-sqlite android-device-monitor

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

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

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

  3. adb shell 苏 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;
        }
    }
    

    感谢大家的关注。

    此致

    拉​​茶

1 个答案:

答案 0 :(得分:0)

解决了即时运行错误后,请参考并尝试实施this,我希望它会有所帮助。