2016-07-07 63 views
1

我有使用SQLite 我已经创建我的数据库的Android - >表......有没有名为“”

public class DBHelper extends SQLiteOpenHelper { 
    public static final String DB_NAME = "appnotas"; 
    public static final int DB_SCHEME_VERSION = 1; 

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

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL(DBManager.CREATE_TABLE); 
    } 

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

    } 

这里是我的DBManager,与空的部分,空在Android的即时通讯问题科拉姆,空的,因为我不需要这一点,但把它如果我不我有机器人的话就像一个错误

public class DBManager { 
    public static final String TABLE_NAME = " notas"; 
    public static final String ColumnNameId = "_id"; 
    public static final String ColumnNameTitulo = "_titulo"; 
    public static final String ColumnNameContenido = "_contenido"; 

    public static final String CREATE_TABLE = "CREATE TABLE" + TABLE_NAME + "(" 
      + ColumnNameId + " INTEGER PRIMARY KEY AUTOINCREMENT, " 
      + ColumnNameTitulo + " TEXT NOT NULL," 
      + ColumnNameContenido + " TEXT)"; 

    public DBHelper helper; 
    public SQLiteDatabase db; 

    public DBManager(Context context) { 
     helper = new DBHelper(context); 
     db = helper.getWritableDatabase(); 
    } 

    public ContentValues generarValores(String titulo, String contenido){ 
     ContentValues valores = new ContentValues(); 
     valores.put(ColumnNameTitulo, titulo); 
     valores.put(ColumnNameContenido, contenido); 
     return valores; 
    } 

    public void insertar(String titulo, String contenido){ 
     db.insert(TABLE_NAME, null, generarValores(titulo, contenido)); 
    } 

    public void eliminar(String titulo){ 
     db.delete(TABLE_NAME, ColumnNameTitulo +"=?", new String[]{titulo}); 
    } 

    public Cursor cargarNotas(){ 
     String[] columnas = new String[]{ColumnNameId,ColumnNameTitulo, ColumnNameContenido}; 
     return db.query(TABLE_NAME, columnas, null, null, null, null, null); 
    } 
} 

,我的主要活动

public class MainActivity extends AppCompatActivity { 

    private DBManager manager; 
    private Cursor cursor; 
    private ListView lista; 
    private SimpleCursorAdapter adapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     manager = new DBManager(this); 
     lista = (ListView) findViewById(R.id.listView); 

     manager.insertar("Test" ,"it works"); 


     String[] from = new String[]{manager.ColumnNameTitulo, manager.ColumnNameContenido}; 
     int[] to = new int[]{android.R.id.text1, android.R.id.text2}; 
     cursor = manager.cargarNotas(); 
     adapter = new SimpleCursorAdapter(this, android.R.layout.two_line_list_item, cursor, from, to, 0); 
     lista.setAdapter(adapter); 

    } 
} 

但是,当我尝试运行这个程序给我一个错误

android.database.sqlite.SQLiteException: table notas has no column named _contenido (code 1): , while compiling: INSERT INTO notas(_titulo,_contenido) VALUES (?,?) 

我尝试将其重命名,但没有工作,所以这让我疯了,我不知道什么问题,谁能帮助我?

+0

你有没有改变你的数据库中的任何东西? –

+0

你检查我的答案http://stackoverflow.com/a/38237684/3981656 –

回答

1

您可以更改DB_VERSION或卸载设备上的旧应用程序,然后重新安装。我认为该设备中存在没有_contenido列的旧数据库。

+0

谢谢卸载应用程序,并重新安装它再次解决问题 – Robert