1

I have problem in Android im using sqlite I've create my database

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) {

    }

here's my DBManager, in the part with null, null, null its because i dont need that but if i dont put it i have android remark like an error

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);
    }
}

and my main activity

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);

    }
}

But when i try to run this app give me an error

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

i try rename it but didn't work so this make me crazy and i dont know whats the problem, can anyone help me?

Robert
  • 13
  • 2

1 Answers1

1

You can change DB_VERSION or uninstall the old app on your device then reinstall. I thinks old database with no _contenido column existed in that device.

mdtuyen
  • 4,470
  • 5
  • 28
  • 50