информация таблицы не имеет столбца с именем Desc при компиляции вставки - PullRequest
0 голосов
/ 23 сентября 2018
package pdatabase.rakesh.phobia.pdatabase;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

class MyDatabase {

    public static final String DB_NAME = "Tasks.db";
    public static final int DB_VER = 2;
    public static final String DB_TABLE = "Info";
    public static final String C_TASK = "task";
    public static final String C_DESC = "desc";
    public static final String Q_CREATE = "CREATE TABLE "+ DB_TABLE + " (C_TASK TEXT, C_DESC TEXT)";
    Context context;
    SQLiteDatabase database;

    public MyDatabase(Context c) {
        context = c;
    }

    public MyDatabase open() {
        DBHelper dbh = new DBHelper(context);
        database = dbh.getWritableDatabase();
        return this;
    }

    public void write(String task, String desc) {
        ContentValues cv = new ContentValues();
        cv.put(C_TASK, task);
        cv.put(C_DESC, desc);
        database.insert( DB_TABLE,null, cv);
    }

    public void close() {
        database.close();
    }

    public String read() {
        String result = "";

        String[] colms = {C_TASK,C_DESC};
        Cursor cur = database.query(DB_TABLE, colms,null,null,null,null,null);

        int iTask=cur.getColumnIndex(C_TASK);
        int iDesc=cur.getColumnIndex(C_DESC);

        for(cur.moveToFirst(); !cur.isAfterLast(); cur.moveToNext()){
            result = result + cur.getString(iTask) + "\t" + cur.getString(iDesc) + "\n";
        }
        return result;
    }

    private class DBHelper extends SQLiteOpenHelper{

        public DBHelper(Context context) {
            super(context, DB_NAME,null, DB_VER);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(Q_CREATE);

        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

        }
    }
}

В приведенном выше коде я не могу ни читать, ни писать C_DESC.Я получаю ошибку, как написано в теме этого поста в Android Studio.Это мой класс базы данных, отвечающий за все операции с базой данных.Он может писать и читать, если и только если присутствует C_TASK.Если оба присутствуют, это может не сработать.Цель приложения - сохранить задачу и описание и просмотреть его.

1 Ответ

0 голосов
/ 23 сентября 2018

Вы создали таблицу с фактическим именем столбца C_DESC вместо использования содержимого этой переменной.Заметьте, кстати, что desc является зарезервированным словом в SQL, поэтому, если вам абсолютно необходимо использовать его в качестве имени столбца, вы должны экранировать его, заключив его в двойные кавычки ("):

public static final String Q_CREATE = 
    "CREATE TABLE "+ DB_TABLE + " (" + 
    "\"" + C_TASK + "\" TEXT, " + 
    "\"" + C_DESC + "\" TEXT)";
...