Ajuda com SQLITE pls

Ajuda com código para sqllite, não estou conseguindo salvar no banco -.-’, aí vai as duas classes:

Classe DbHelper:

public class DbHelper extends SQLiteOpenHelper{

	private static final int DATABASE_VERSION = 1;
	public static final String TABLE_NAME = "postagens";
	private static final String DATABASE_NAME = "CashManager.db";
	
	public static final String ID = "_id";
	public static final String TITULO = "titulo";
	public static final String PRECO = "preco";
	public static final String PARCELAS = "parcelas";
	public static final String DETALHES = "detalhes";
	public static final String FOTO = "foto";
	private static final String DATABASE_CREATE = "create table "
	+ TABLE_NAME + "( " + ID
	+ " integer primary key autoincrement, " + TITULO
	+ " text not null, " + PRECO + " text not null, "
	+ PARCELAS +" text not null, " + DETALHES + "text not null, " + 
	", "+ FOTO +" BLOB);";
	
	public DbHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
	}

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

	@Override
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		Log.w(DbHelper.class.getName(),
               "Upgrading database from version " + oldVersion + " to "
               + newVersion + ", which will destroy all old data");
               db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
               onCreate(db);
	}

}

Classe DBAdapter:

public class DBAdapter {
	private SQLiteDatabase database;
	private DbHelper dbHelper;
	private String[] allColumns = { DbHelper.ID, DbHelper.TITULO, DbHelper.PRECO,
			DbHelper.PARCELAS, DbHelper.DETALHES, DbHelper.FOTO};
	
	public DBAdapter(Context context) {          
		dbHelper = new DbHelper(context);
		}
	
	private Postagem cursorToContacto(Cursor cursor) { 
        byte[] blob = cursor.getBlob(cursor.getColumnIndex(DbHelper.FOTO)); 
        Bitmap bmp = BitmapFactory.decodeByteArray(blob, 0, blob.length); 
        Postagem post = new 
        Postagem(cursor.getLong(0),cursor.getString(1),cursor.getString(2), 
        cursor.getString(3), cursor.getString(4)); 
        return post; 
}
	
	public Postagem createPost(Postagem post) { 
        ContentValues values = new ContentValues(); 
        values.put(DbHelper.TITULO, post.titulo); 
        values.put(DbHelper.PRECO, post.preco);
        values.put(DbHelper.PARCELAS, post.parcelas); 
        values.put(DbHelper.DETALHES, post.detalhes); 
        
        long insertId = database.insert(DbHelper.TABLE_NAME, null, values); 
       // To show how to query 
       Cursor cursor = database.query(DbHelper.TABLE_NAME, allColumns, DbHelper.ID + " = " + 
       insertId, null,null, null, null); 
       cursor.moveToFirst(); 
       return cursorToContacto(cursor); 
	}
}

Primeiro vc tem que dizer se dá algum erro e como é o seu procedimento para inserir o registro.
Pelo que eu vi no seu código vc não implementou as operações para abrir o banco e fechar o banco na sua classe DBAdapter,a implementação seria algo como esse exemplo:
O esse método open cria a sua base caso não tenha sido criada,e te dá acesso ao banco.

public void open() throws SQLException {
		database = dbHelper.getWritableDatabase();
	}

E o close finaliza a utilização de qualquer recurso que tenha sido criado quando vc manipula alguma informação no banco.

public void close() {
		dbHelper.close();
	}

Sempre chame o open antes de executar algo no banco e close quando após finalizar alguma transação no banco.

Bom, seguinte meu objetivo é armazenar no banco uma Postagem que tem 4 strings e 1 long (no caso o ID), o código roda até eu clicar no botão de postar, quando clico gera um NullPointerException. O método que uso pra chamar o criarPost é o seguinte:

btPostar.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				System.out.println("Entrou aqui 1");
				titulo = etTitulo.getText().toString();
				preco = etPreco.getText().toString();
				parcelas = etParcelas.getText().toString();
				detalhes = etDetalhes.getText().toString();
				
				Postagem post = new Postagem(0, titulo, preco, parcelas, detalhes);
				db.createPost(post);
				
				
				finish();
				
			}
		});

Uma dúvida em que momento (no meu código) devo abrir e fechar a conexão? Desde já agradeço pela ajuda ^^

btPostar.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				System.out.println("Entrou aqui 1");
				titulo = etTitulo.getText().toString();
				preco = etPreco.getText().toString();
				parcelas = etParcelas.getText().toString();
				detalhes = etDetalhes.getText().toString();
				
				Postagem post = new Postagem(0, titulo, preco, parcelas, detalhes);
                                db.open();
				db.createPost(post);
				db.close();
				
				finish();
				
			}
		});

Se continuar com erro ,coloca o erro que aparece no logcat.