Android Studio Sqlite База данных - PullRequest
0 голосов
/ 27 октября 2018
public class DatabaseHelper extends SQLiteOpenHelper{
    public static final String DATABASE_NAME = "Register.db";
    public static final String TABLE_NAME = "particulars_table";
    public static final String COL_1 = "ID";
    public static final String COL_2 = "Email";
    public static final String COL_3 = "Username";
    public static final String COL_4 = "Password";


    public DatabaseHelper(Context context){
        super(context, DATABASE_NAME, null, 1);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        //db.execSQL("CREATE TABLE IF NOT EXISTS" + TABLE_NAME + "(ID INTEGER PRIMARY KEY AUTOINCREMENT,EMAIL TEXT,USERNAME TEXT,PASSWORD TEXT)");
        db.execSQL("CREATE TABLE IF NOT EXISTS (ID INTEGER PRIMARY KEY AUTOINCREMENT,Email VARCHAR, Username VARCHAR,Password VARCHAR);");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
       db.execSQL("DROP TABLE IF EXISTS" + TABLE_NAME);
        onCreate(db);
    }

    public boolean insertData(String Email, String Username, String Password){

        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contentValues = new ContentValues();
        contentValues.put(COL_2,Email);
        contentValues.put(COL_3,Username);
        contentValues.put(COL_4,Password);
        long result = db.insert(TABLE_NAME,null,contentValues);
        if(result == -1)
            return false;
        else
            return true;
    }

}

У меня есть этот код в моем проекте, но я не могу поместить таблицу в свою базу данных. Когда я проверил свою базу данных в проводнике разработчика, она была создана. Что-то не так с моим кодом, который мешает ему создать таблицу и принять мои входные данные из моей программы, чтобы сохранить подробности?

Ответы [ 4 ]

0 голосов
/ 27 октября 2018

Просто измените db.execSQL на

db.execSQL("CREATE TABLE IF NOT EXISTS $TABLE_NAME (ID INTEGER PRIMARY KEY AUTOINCREMENT,Email VARCHAR, Username VARCHAR,Password VARCHAR);");

$TABLE_NAME будет заменен на String TABLE_NAME = "particulars_table" на SqlHelper

0 голосов
/ 27 октября 2018

Ваш закомментированный оператор CREATE должен быть изменен на следующее:

"CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT,EMAIL TEXT,USERNAME TEXT, PASSWORD TEXT)"

у вас не было пробела до TABLE_NAME, поэтому он произвел следующее:CREATE TABLE IF NOT EXISTSparticulars_table.

В onCreate() измените db.execSQL() на следующее:

db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT,EMAIL TEXT,USERNAME TEXT, PASSWORD TEXT)");

Удалите приложение с эмулятора / устройства, на котором вы его тестировали, чтобы удалить БДи беги снова.

0 голосов
/ 27 октября 2018
db.execSQL("CREATE TABLE IF NOT EXISTS (ID INTEGER PRIMARY KEY AUTOINCREMENT,Email VARCHAR, Username VARCHAR,Password VARCHAR);"); }

В этом запросе имя таблицы не указано.Возможно, причина в том, что таблица не создана.

0 голосов
/ 27 октября 2018

Попробуйте создать таблицу.

В приведенном ниже запросе не было пробела между EXISTS и Имя таблицы , поэтому оно было EXISTSTable name.

db.execSQL("CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT,EMAIL TEXT,USERNAME TEXT,PASSWORD TEXT)");

OR В этом вы не добавили имя таблицы.

db.execSQL("CREATE TABLE IF NOT EXISTS TABLE_NAME (ID INTEGER PRIMARY KEY AUTOINCREMENT,Email VARCHAR, Username VARCHAR,Password VARCHAR);");
...