android - 没有这样的列名 sqlite android

标签 android sqlite

我正在尝试将列表中的一些值添加到 android sqlite 数据库,但不知何故它似乎找不到表,而且根据 logcat,我尝试添加到表中的内容顺序不正确。我又使用了 3 个表,并在没有问题的情况下添加了值。我已经为此苦苦挣扎了一段时间,但我似乎看不到问题所在。有任何想法吗?这是我的代码和错误消息:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_settings);
    currentCurrency = new ArrayList<String>();
    currentCurrencyDetails = new ArrayList<String>();
    currentCurrency.add("€");
    currentCurrencyDetails.add("€ EURO");
    currentCurrency.add("£");
    currentCurrencyDetails.add("£ UK POUND");
    currentCurrency.add("$");
    currentCurrencyDetails.add("$ USA DOLLAR");
    currentCurrency.add("¥");
    currentCurrencyDetails.add("¥ JAPAN YEN");

    db = new DBAdapter(this);
    db.open();
    for (int i = 0; i <= currentCurrency.size() - 1; i++) {
        if (i == 0) {
            db.insertDefaultCurrency(currentCurrency.get(i).toString(),
                    currentCurrencyDetails.get(i).toString(), 1);
        } else {
            db.insertDefaultCurrency(currentCurrency.get(i).toString(),
                    currentCurrencyDetails.get(i).toString(), 0);
        }
    }

}

DBAdapter 类:

public static final String MY_CURRENT_CURRENCY_TABLE = "MyCurrency";
public static final String MY_CURRENT_CURRENCY = "MyCurrentCurrency";
public static final String MY_CURRENT_CURRENCY_NAMES = "MyCurrentCurrencyNames";
public static final String MY_CURRENT_CURRENCY_BOOLEAN = "MyCurrentCurrencyBoolean";

private static final String DATABASE4_CREATE = "CREATE TABLE "
        + MY_CURRENT_CURRENCY_TABLE + "(" + MY_CURRENT_CURRENCY + " TEXT NOT NULL, "
        + MY_CURRENT_CURRENCY_NAMES + " TEXT NOT NULL, "
        + MY_CURRENT_CURRENCY_BOOLEAN + "INTEGER NOT NULL);";

    public void onCreate(SQLiteDatabase db) {
        db.execSQL(DATABASE_CREATE);
        db.execSQL(DATABASE1_CREATE);
        db.execSQL(DATABASE2_CREATE);
        db.execSQL(DATABASE3_CREATE);
        db.execSQL(DATABASE4_CREATE);
    }

public long insertDefaultCurrency(String currency, String currencyDetails, int usedBoolean) {
    ContentValues initialValues = new ContentValues();
    initialValues.put(MY_CURRENT_CURRENCY, currency);
    initialValues.put(MY_CURRENT_CURRENCY_NAMES, currencyDetails);
    initialValues.put(MY_CURRENT_CURRENCY_BOOLEAN, usedBoolean);
    return db.insert(MY_CURRENT_CURRENCY_TABLE, null, initialValues);
}

日志消息:

01-28 10:31:26.865: E/SQLiteLog(8623): (1) table MyCurrency has no column named MyCurrentCurrencyBoolean
01-28 10:31:26.880: E/SQLiteDatabase(8623): Error inserting MyCurrentCurrencyBoolean=1 MyCurrentCurrency=€ MyCurrentCurrencyNames=€ EURO
01-28 10:31:26.880: E/SQLiteDatabase(8623): android.database.sqlite.SQLiteException: table MyCurrency has no column named MyCurrentCurrencyBoolean (code 1): , while compiling: INSERT INTO MyCurrency(MyCurrentCurrencyBoolean,MyCurrentCurrency,MyCurrentCurrencyNames) VALUES (?,?,?)

最佳答案

改变:

+ MY_CURRENT_CURRENCY_BOOLEAN + "INTEGER NOT NULL);";

+ MY_CURRENT_CURRENCY_BOOLEAN + " INTEGER NOT NULL);";

"INTEGER 之间缺少空格几乎肯定是导致错误的原因。之后,清除应用程序的数据并再次运行,以便重新创建数据库.

关于android - 没有这样的列名 sqlite android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14558423/

相关文章:

java - 如何根据屏幕尺寸启动 Activity ?

安卓实时位置追踪

java - Android - 需要有关 ondraw() 查看示例的帮助

Android - 对新添加的 ImageView 和 TextView 设置约束

android - 如何使用 phonegap+html+javascript 在 .apk 中显示 pdf 文件

android - ActiveAndroid 库中 execute() 和 executeSIngle() 方法之间的区别?

android - 在 SharedPreferences 中存储和检索目录 Uri

c++ - 如何在 Ubuntu 上通过 C++ 使用 SQLite? (未定义的引用错误)

php - 无需第三方服务即可同步移动应用程序和网络应用程序

sql - 在SQL Server的数据库浏览器中按Desc和Asc排序