java - 尝试使用 SQLite 在 android 中存储数据,创建合约类和帮助程序类时出现问题

标签 java android

这是屏幕截图 https://ibb.co/Yjvy3Z7 基本上表明即使我在另一个类中创建它,也无法解析 SQL_CREATE_ENTRIES 我在馈线契约(Contract)类的子类中定义了它。我知道您可以期望在这样的类之间共享变量,但我现在应该做什么?文档确实说了一些其他的事情,但是哦......


import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.BaseColumns;

public final class FeedReaderContract {
    // To prevent someone from accidentally instantiating the contract class,
    // make the constructor private.
    private FeedReaderContract() {}

    /* Inner class that defines the table contents */
    public static class FeedEntry implements BaseColumns {
        public static final String TABLE_NAME = "relapse_data";
        public static final String COLUMN_NAME_NAME = "Name"; //text
        public static final String COLUMN_NAME_QUANTITY = "Quantity"; //integer
        public static final String COLUMN_NAME_CHOCOLATE = "Chocolate"; //integer 0-false 1 -true
        public static final String COLUMN_NAME_WHIPPED_CREAM = "Whipped Cream";
        public static final String COLUMN_NAME_COST = "Cost"; //integer
        public static final String SQL_CREATE_ENTRIES = "CREATE TABLE "+TABLE_NAME+"("+
                "_id INTEGER PRIMARY KEY,"+
                COLUMN_NAME_NAME+" TEXT,"+
                COLUMN_NAME_QUANTITY+" INTEGER,"+
                COLUMN_NAME_CHOCOLATE+" INTEGER,"+
                COLUMN_NAME_WHIPPED_CREAM+" INTEGER,"+
                COLUMN_NAME_COST+" INTEGER"
                +")";

    }
}
public class FeedReaderDbHelper extends SQLiteOpenHelper {
    // If you change the database schema, you must increment the database version.
    public static final int DATABASE_VERSION = 1;
    public static final String DATABASE_NAME = "FeedReader.db";

    public FeedReaderDbHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(SQL_CREATE_ENTRIES);
    }
//    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//        // This database is only a cache for online data, so its upgrade policy is
//        // to simply to discard the data and start over
//        db.execSQL(SQL_DELETE_ENTRIES);
//        onCreate(db);
//    }
    public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        onUpgrade(db, oldVersion, newVersion);
    }
}

最佳答案

代码的正确版本

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.BaseColumns;

public final class FeedReaderContract {
    // To prevent someone from accidentally instantiating the contract class,
    // make the constructor private.
    private FeedReaderContract() {
    }

    /* Inner class that defines the table contents */
    public static class FeedEntry implements BaseColumns {
        public static final String TABLE_NAME = "relapse_data";
        public static final String COLUMN_NAME_NAME = "Name"; //text
        public static final String COLUMN_NAME_QUANTITY = "Quantity"; //integer
        public static final String COLUMN_NAME_CHOCOLATE = "Chocolate"; //integer 0-false 1 -true
        public static final String COLUMN_NAME_WHIPPED_CREAM = "Whipped Cream";
        public static final String COLUMN_NAME_COST = "Cost"; //integer
        public static final String SQL_CREATE_ENTRIES = "CREATE TABLE " + TABLE_NAME + "(" +
                "_id INTEGER PRIMARY KEY," +
                COLUMN_NAME_NAME + "TEXT," +
                COLUMN_NAME_QUANTITY + "INTEGER," +
                COLUMN_NAME_CHOCOLATE + "INTEGER," +
                COLUMN_NAME_WHIPPED_CREAM + "INTEGER," +
                COLUMN_NAME_COST + " INTEGER"
                + ")";

    }
}

class FeedReaderDbHelper extends SQLiteOpenHelper {
    // If you change the database schema, you must increment the database version.
    public static final int DATABASE_VERSION = 1;
    public static final String DATABASE_NAME = "FeedReader.db";

    public FeedReaderDbHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    public void onCreate(SQLiteDatabase db) {
        db.execSQL(FeedReaderContract.FeedEntry.SQL_CREATE_ENTRIES);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        //KEEP IT EMPTY INSTEAD OF COMMENTING
    }

    public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        onDowngrade(db, oldVersion, newVersion);
    }
}

给你!

关于java - 尝试使用 SQLite 在 android 中存储数据,创建合约类和帮助程序类时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60837955/

相关文章:

android - 如何为 Android 测试生成缩放/捏合手势

android - 如何在android studio中生成签名的apk

java - 使键盘自动出现

java - 如何在 Java 中隐藏枚举值?

java - 为什么Java的数字类不相互扩展?

java - 将文件文件夹附加到 jar 中

java.lang.NoClassDefFoundError : javax/servlet/ServletContextListener error

android - 包含布局的 Root View 上的 NullPointerException

java - 如何允许用户导航到文件系统?

java - 使用 SQLite 保存数据并将其添加到 ListView