示例#1
0
 public static ColumnInfo FromType(Type type)
 {
     return(new ColumnInfo()
     {
         DataType = type,
         ColumnSize = MdbTypeMap.GetTypeInfo(type).Size,
         AllowDBNull = true
     });
 }
示例#2
0
            public static ColumnInfo FromValue(object value)
            {
                ColumnInfo  c    = new ColumnInfo();
                MdbTypeInfo info = MdbTypeMap.GetTypeInfo(value.GetType());

                c.DataType    = info.Type;
                c.ColumnSize  = info.Size;
                c.AllowDBNull = info.NullIfEmpty;
                return(c);
            }
示例#3
0
            // например ColumnInfo FromName("Field1.int.4.0")
            public static ColumnInfo FromName(string columnInfo)
            {
                string[] cInfo = (columnInfo + "....").Split('.');

                string typeName = cInfo[1].IsEmpty() ? "string" : cInfo[1].ToLower();
                Type   t        = MdbTypeMap.GetType(typeName, typeof(string));

                return(new ColumnInfo()
                {
                    DataType = t,
                    ColumnSize = cInfo[2].IsEmpty() ? MdbTypeMap.GetTypeInfo(t).Size : cInfo[2].ToIntOrDefault(),
                    AllowDBNull = cInfo[3].ToBoolOrDefault()
                });
            }
示例#4
0
        protected override void ToJsonRaw(JsonWriter writer)
        {
            writer.WriteProperty("HeaderSize", _headerSpaceSize);

            #region Heders
            writer.WritePropertyName("Headers");
            writer.WriteStartObject();
            foreach (var kvp in _headers)
            {
                writer.WriteProperty(kvp.Key, kvp.Value);
            }
            writer.WriteEndObject();
            #endregion Heders

            #region Columns
            writer.WritePropertyName("Columns");
            writer.WriteStartArray();
            for (int i = 0; i < _indexes.Length; i++)
            {
                ColumnInfo ci = _colInfo[i];
                writer.WriteStartObject();
                writer.WritePropertyName("Name");
                writer.WriteValue(_indexes[i]);
                writer.WritePropertyName("Type");
                writer.WriteValue(MdbTypeMap.GetTypeInfo(ci.DataType).Name);
                writer.WritePropertyName("Size");
                writer.WriteValue(ci.ColumnSize);
                writer.WritePropertyName("AllowNull");
                writer.WriteValue(ci.AllowDBNull);
                writer.WriteEndObject();
            }
            writer.WriteEndArray();
            #endregion Columns

            #region Data
            writer.WritePropertyName("Rows");
            GoDataTop();
            writer.WriteStartArray();
            for (; Read();)
            {
                WriteRowJson(writer);
            }
            writer.WriteEndArray();
            #endregion Data
        }
示例#5
0
        private void WritePackageHeader(byte[] headersAsByteArray = null, int bytesToWrite = 0)
        {
            //Write sizes
            _bw.Position = 0;
            _bw.Write(_headerSpaceSize);
            _bw.Write(_colCount);

            //Write Headers
            if (headersAsByteArray == null)
            {
                _bw.Write(_headers);
            }
            else
            {
                _bw.WriteBlock(headersAsByteArray, bytesToWrite);
            }

            int len = header_pos + _headerSpaceSize - _bw.Position;

            if (len < 0)
            {
                int p = _bw.Position;
                //if _headerSpaceSize less then sizeof _headers
                _headerSpaceSize = p;
                len = header_pos + _headerSpaceSize - p;
                //write new _headerSpaceSize
                _bw.Position = 0;
                _bw.Write(_headerSpaceSize);
                _bw.Position = p;
            }
            _bw.WriteSpace(len);

            //Write ColInfo
            for (int i = 0; i < _colCount; i++)
            {
                var ci = _colInfo[i];
                _bw.Write(_indexes[i]);
                _bw.Write((byte)MdbTypeMap.GetTypeInfo(ci.DataType).MdbType);
                _bw.Write(ci.ColumnSize);
                _bw.Write(ci.AllowDBNull);
            }
            _dataPos = _bw.Position;
        }
示例#6
0
 public string GetDataTypeName(int i) => MdbTypeMap.GetTypeInfo(_colInfo[i].DataType).Name;