예제 #1
0
        private JObject ReadRow(TableDefinition table, SqliteDataReader reader)
        {
            JObject row = new JObject();

            for (int i = 0; i < reader.FieldCount; i++)
            {
                if (!reader.IsDBNull(i))
                {
                    string name  = reader.GetName(i);
                    object value = new object();
                    if (reader.GetDataTypeName(i) == "DATETIME")
                    {
                        try
                        {
                            value = reader.GetDouble(reader.GetOrdinal(name));
                        }
                        catch (FormatException ex)
                        {
                            value = reader.GetInt64(reader.GetOrdinal(name));
                        }
                    }
                    else
                    {
                        value = reader.GetValue(i);
                    }

                    ColumnDefinition column;

                    if (table.TryGetValue(name, out column))
                    {
                        JToken jVal = SqlHelpers.DeserializeValue(value, column.StoreType, column.JsonType);
                        row[name] = jVal;
                    }
                    else
                    {
                        row[name] = value == null ? null : JToken.FromObject(value);
                    }
                }
            }
            return(row);
        }
        private JObject ReadRow(TableDefinition table, sqlite3_stmt statement)
        {
            var row = new JObject();

            for (int i = 0; i < raw.sqlite3_column_count(statement); i++)
            {
                string name  = raw.sqlite3_column_name(statement, i).utf8_to_string();
                object value = SQLitePCLRawHelpers.GetValue(statement, i);

                if (table.TryGetValue(name, out ColumnDefinition column))
                {
                    JToken jVal = SqlHelpers.DeserializeValue(value, column.StoreType, column.JsonType);
                    row[name] = jVal;
                }
                else
                {
                    row[name] = value == null ? null : JToken.FromObject(value);
                }
            }
            return(row);
        }
예제 #3
0
        private JObject ReadRow(TableDefinition table, ISQLiteStatement statement)
        {
            var row = new JObject();

            for (int i = 0; i < statement.ColumnCount; i++)
            {
                string name  = statement.ColumnName(i);
                object value = statement[i];

                ColumnDefinition column;
                if (table.TryGetValue(name, out column))
                {
                    JToken jVal = SqlHelpers.DeserializeValue(value, column.StoreType, column.JsonType);
                    row[name] = jVal;
                }
                else
                {
                    row[name] = value == null ? null : JToken.FromObject(value);
                }
            }
            return(row);
        }