2016-02-18 43 views
0

我在添加列到我的SQLite表时遇到问题。它显示错误消息,列local不存在。我正以这种方式接受考试。有人能帮我吗?将列添加到SQL Android

主要活动:

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不存在。

+0

卸载并重新安装您的应用程序。 – Rohit5k2

回答

0
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的行中发现一些内容。

0

没关系,我错过了2列之间的逗号