Android studio Как правильно вставить элементы списка в базу данных sqlite - PullRequest
0 голосов
/ 15 октября 2018

Я пытался сохранить элементы списка в моей базе данных sql, этот код не работает: он просто работает все время, но ничего не сохраняет в базе данных.Любая помощь, как вставить просмотр списка в базу данных sql?

Это часть моего кода, где я пытаюсь вставить элементы просмотра списка

for(int i=0;i<=myAdapter.myItems.size();i++){
    String name=tabl.getText().toString();
    String answer=myAdapter.getItem(i).toString();
    mHelper.insertData(name,answer);
    //mHelper is the variable name for my DBhandler class
}

Это мой класс DBhandler

public class DBHandler extends SQLiteOpenHelper {
    public static final String DB_NAME = "quiz.db";
    public static final int DB_VERSION = 2;
    public static final String TABLE = "user";
    public static final String COL_TASK_TITLE = "title";
    public static final String ID = "id";
    public static final String COL_ANS="answer";
    public DBHandler(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
        SQLiteDatabase db=getWritableDatabase();
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String createtable="CREATE TABLE " + TABLE + " ( "+ ID +" INTEGER PRIMARY KEY AUTOINCREMENT, "+ COL_TASK_TITLE+ "TEXT NOT NULL,"+ COL_ANS+"TEXT NOT NULL);";
        db.execSQL(createtable);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE);
        onCreate(db);
    }
    public boolean insertData(String name,String quiz){
        SQLiteDatabase db=this.getWritableDatabase();
        ContentValues contex=new ContentValues();
        contex.put(COL_TASK_TITLE,quiz);
        contex.put(COL_ANS,name);
        long result=db.insert(TABLE,null,contex);
        if(result==-1)
        {
            return false;
        }else{
            return true;
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 16 октября 2018
public class DBHandler extends SQLiteOpenHelper {
    public static final String DB_NAME = "quiz.db";
    public static final int DB_VERSION = 1;
    public static final String TABLE = "user";
    public static final String COL_TASK_TITLE = "title";
    public static final String ID = "id";
    public static final String COL_ANS = "answer";

    public DBHandler(Context context) {
        super(context, DB_NAME, null, DB_VERSION);

    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String createtable="CREATE TABLE " + TABLE + " ( "+ ID +" INTEGER PRIMARY KEY AUTOINCREMENT, "+ COL_TASK_TITLE+ " TEXT NOT NULL,"+ COL_ANS+" TEXT NOT NULL)";
        db.execSQL(createtable);
        Log.i("Create",createtable + " Created");
    }

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

    public boolean insertData(String name, String quiz) {
        SQLiteDatabase db = this.getWritableDatabase();
        ContentValues contex = new ContentValues();
        contex.put(COL_TASK_TITLE, quiz);
        contex.put(COL_ANS, name);
        long result = db.insert(TABLE, null, contex);
        Log.i("Inserted ", "Done");
        if (result == -1) {
            return false;
        } else {
            return true;
        }
    }


}

Надеюсь, это поможет вам, просто вам нужно избегать конкатенации в SQL-выражении create table.Просто удалите предыдущее приложение.

0 голосов
/ 15 октября 2018
    String createtable="CREATE TABLE " + TABLE + " ( "+ ID +" INTEGER PRIMARY KEY AUTOINCREMENT, "+ COL_TASK_TITLE+ " TEXT NOT NULL,"+ COL_ANS+" TEXT NOT NULL)";

Оставьте некоторое пространство перед ТЕКСТОМ, НЕ ПУСТОМ, он объединяет имя столбца и тип данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...