using Sqlite; namespace Qlite { public abstract class StatementBuilder { protected Database db; internal StatementBuilder(Database db) { this.db = db; } internal abstract Statement prepare() throws DatabaseError; internal class Field { public T value; public Column? column; public Field(Column? column, T value) { this.column = column; this.value = value; } internal virtual void bind(Statement stmt, int index) { if (column != null) { column.bind(stmt, index, value); } } } internal class NullField : Field { public NullField(Column? column) { base(column, null); } internal override void bind(Statement stmt, int index) { stmt.bind_null(index); } } internal class StringField : Field { public StringField(string value) { base(null, value); } internal override void bind(Statement stmt, int index) { stmt.bind_text(index, value); } } } }