private void BindStatement(SQLite.Net.Interop.IDbStatement statement, int argIndex, JToken arg) { switch (arg.Type) { case JTokenType.Undefined: case JTokenType.Null: _sqliteAPI.BindNull(statement, argIndex); break; case JTokenType.Boolean: _sqliteAPI.BindInt(statement, argIndex, arg.ToObject <bool>() ? 1 : 0); break; case JTokenType.Integer: _sqliteAPI.BindInt64(statement, argIndex, arg.ToObject <long>()); break; case JTokenType.Float: _sqliteAPI.BindDouble(statement, argIndex, arg.ToObject <double>()); break; case JTokenType.String: _sqliteAPI.BindText16(statement, argIndex, arg.ToObject <string>(), -1, NegativePointer); break; default: _sqliteAPI.BindText16(statement, argIndex, arg.ToObject <string>(), -1, NegativePointer); break; } }
private Dictionary <string, object> ExtractRow(SQLite.Net.Interop.IDbStatement statement) { var row = new Dictionary <string, object>(); var columnCount = _sqliteAPI.ColumnCount(statement); for (var i = 0; i < columnCount; i++) { var columnName = _sqliteAPI.ColumnName16(statement, i); var columnValue = ExtractColumn(statement, i); if (columnValue != null) { row[columnName] = columnValue; } } return(row); }
private object ExtractColumn(SQLite.Net.Interop.IDbStatement statement, int columnIndex) { var columnType = _sqliteAPI.ColumnType(statement, columnIndex); switch (columnType) { case SQLite.Net.Interop.ColType.Integer: return(_sqliteAPI.ColumnInt64(statement, columnIndex)); case SQLite.Net.Interop.ColType.Float: return(_sqliteAPI.ColumnDouble(statement, columnIndex)); case SQLite.Net.Interop.ColType.Blob: return(_sqliteAPI.ColumnBlob(statement, columnIndex)); case SQLite.Net.Interop.ColType.Text: return(_sqliteAPI.ColumnText16(statement, columnIndex)); case SQLite.Net.Interop.ColType.Null: default: return(null); } }