2016-07-07 28 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

相關問題