将列添加到 SQL Android



我在向 SQLite 表添加列时遇到问题。它显示一条错误消息,指出列local不存在。我以这种方式接近考试。有人可以帮助我吗?

主要活动:

private Cursor obterCidades() {
      String[] projection = {
            LocalizacoesContract.CidadeEntry.TABLE_NAME + "." +
                    LocalizacoesContract.CidadeEntry._ID,
            LocalizacoesContract.CidadeEntry.TABLE_NAME + "." +
                    LocalizacoesContract.CidadeEntry.COLUMN_NAME_NOME_CIDADE + " AS CIDADE ",
            LocalizacoesContract.CidadeEntry.TABLE_NAME + "." +
                    LocalizacoesContract.CidadeEntry.COLUMN_NAME_NOME_LOCAL + " AS LOCAL ",
            LocalizacoesContract.PaisEntry.TABLE_NAME + "." +
                    LocalizacoesContract.PaisEntry.COLUMN_NAME_NOME_PAIS + " AS PAIS "
    };
    String sortOrder =
            LocalizacoesContract.CidadeEntry.TABLE_NAME + "." +
                    LocalizacoesContract.CidadeEntry.COLUMN_NAME_NOME_CIDADE + " ASC";
    c = db.query(
            LocalizacoesContract.CidadeEntry.TABLE_NAME + " INNER JOIN " +
                    LocalizacoesContract.PaisEntry.TABLE_NAME,
            projection,
            LocalizacoesContract.CidadeEntry.TABLE_NAME + "." +
                    LocalizacoesContract.CidadeEntry.COLUMN_NAME_ID_PAIS + "=" +
                    LocalizacoesContract.PaisEntry.TABLE_NAME + "." +
                    LocalizacoesContract.PaisEntry._ID,
            null,
            null,
            null,
            sortOrder
    );
    return c;
}

这是合同:

import android.provider.BaseColumns;
public final class LocalizacoesContract {
    private static final String TEXT_TYPE = " TEXT";
    private static final String COMMA_SEP = ",";
    // To prevent someone from accidentally instantiating the contract class,
    // give it an empty constructor.
    public LocalizacoesContract() {}
    /* Inner class that defines the table contents */
    public static abstract class CidadeEntry implements BaseColumns {
        public static final String TABLE_NAME = "cidade";
        public static final String COLUMN_NAME_NOME_CIDADE = "nome";
        public static final String COLUMN_NAME_NOME_LOCAL = "local";
        public static final String COLUMN_NAME_ID_PAIS = "id_pais";
        public static final String SQL_CREATE_ENTRIES =
               "CREATE TABLE " + CidadeEntry.TABLE_NAME + " (" +
                       CidadeEntry._ID + " INTEGER PRIMARY KEY," +
                       CidadeEntry.COLUMN_NAME_ID_PAIS + " INTEGER, " +
                       CidadeEntry.COLUMN_NAME_NOME_CIDADE + TEXT_TYPE +
                       CidadeEntry.COLUMN_NAME_NOME_LOCAL + TEXT_TYPE +
                       ", FOREIGN KEY (" + CidadeEntry.COLUMN_NAME_ID_PAIS + ") "
                       + "REFERENCES " + PaisEntry.TABLE_NAME + "(" + PaisEntry._ID + "));";
        public static final String SQL_DELETE_ENTRIES =
               "DROP TABLE IF EXISTS " + CidadeEntry.TABLE_NAME;
    }
    /* Inner class that defines the table contents */
    public static abstract class PaisEntry implements BaseColumns {
        public static final String TABLE_NAME = "pais";
        public static final String COLUMN_NAME_NOME_PAIS = "nome";
        public static final String SQL_CREATE_ENTRIES =
               "CREATE TABLE " + PaisEntry.TABLE_NAME + " (" +
                       PaisEntry._ID + " INTEGER PRIMARY KEY," +
                       PaisEntry.COLUMN_NAME_NOME_PAIS + TEXT_TYPE + " )";
        public static final String SQL_DELETE_ENTRIES =
               "DROP TABLE IF EXISTS " + PaisEntry.TABLE_NAME;
    }
}

它向我显示一个错误,指出列local不存在。

public static final String SQL_CREATE_ENTRIES =
            "CREATE TABLE " + CidadeEntry.TABLE_NAME + " (" +
                    CidadeEntry._ID + " INTEGER PRIMARY KEY," +
                    CidadeEntry.COLUMN_NAME_ID_PAIS + " INTEGER, " +
                    CidadeEntry.COLUMN_NAME_NOME_CIDADE + TEXT_TYPE +
                    CidadeEntry.COLUMN_NAME_NOME_LOCAL + TEXT_TYPE +
                    ", FOREIGN KEY (" + CidadeEntry.COLUMN_NAME_ID_PAIS + ") "
                    + "REFERENCES " + PaisEntry.TABLE_NAME + "(" + PaisEntry._ID + "));";

去记录这会产生什么。您会在其中找到一些nome TEXTlocal TEXT的东西,因为您忘记使用逗号分隔符。

关系,我在 2 列之间缺少逗号

最新更新