База данных SQLite для Android 3.1 не создает таблицы и не вставляет поля в базу данных. - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь создать базу данных SQLite через Android 3.1. Но это не работает как код, следующий ниже. Пожалуйста, помогите, спасибо.

Основной Activity.class

public class MainActivity extends AppCompatActivity { DatabaseHelper myDb; 

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        myDb = new DatabaseHelper(this);  // this is contact, this is new extension of DatabaseHelper

    } 
} 

DatabaseHelper.class

public class DatabaseHelper extends SQLiteOpenHelper { 
    public static final String DATABASE_NAME = "Iters.db";
    public static final String TABLE_NAME = "iters_table"; //called onCreate method
    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 i, int i1) {
        db.execSQL("DROP TABLE IF EXISTS " +TABLE_NAME);
        onCreate(db);
    } 
 }

1 Ответ

0 голосов
/ 12 ноября 2018

Возможно, ваша проблема в том, что вы называете таблицу TABLE_NAME , а не iters_table .

Вы можете исправить это, используя: -

db.execSQL("CREATE TABLE " + TABLE_NAME + "(ID INTEGER PRIMARY KEY," +
                "NAME TEXT," +
                "SURNAME TEXT," +
                "MARKS INTEGER)");
  • Примечание Я также удалил ключевое слово AUTOINCREMENT , поскольку оно, скорее всего, вам не нужно (столбец идентификатора будет по-прежнему генерироваться автоматически 1, затем 2, затем 3 и т. Д. (вероятно)) как: -
    • a) Возможно, это наиболее неправильно используемое ключевое слово, а
    • б) Это немного дорого с точки зрения производительности
    • Возможно, вы захотите прочитать Автоинкремент SQLite , учитывая, что первое предложение - Ключевое слово AUTOINCREMENT накладывает дополнительные ресурсы ЦП, памяти, дискового пространства и дискового ввода-вывода. накладные расходы и их следует избегать, если в этом нет особой необходимости. Обычно это не требуется. Я считаю, что издержки - это потеря производительности в диапазоне от 8% до 12% (согласно Каковы издержки использования AUTOINCREMENT для SQLite на андроид? )
...