Пример #1
0
        private void PrintMissignQuery(string sql, List <TDSRPCRequestParameter> parameters)
        {
            var newStub = new SqlStub();

            newStub.Query      = sql;
            newStub.Parameters = new Dictionary <string, object>();

            lock (_exisitngStubs)
            {
                _missingStubs.Add(newStub);
                Console.WriteLine($"--------------{Name}---------------------");
                Console.WriteLine(sql);

                if (null != parameters)
                {
                    foreach (var parameter in parameters)
                    {
                        if (null != parameter.ParamMetaData && "@RETURN_VALUE" != parameter.ParamMetaData)
                        {
                            Console.WriteLine(parameter.ParamMetaData + " = " + parameter.Value);
                            newStub.Parameters.Add(parameter.ParamMetaData.Substring(1), parameter.Value);
                        }
                    }
                }
            }
        }
Пример #2
0
 public void AddStub(SqlStub stub)
 {
     if (_exisitngStubs.ContainsKey(stub.Query))
     {
         _exisitngStubs[stub.Query].Add(stub);
     }
     else
     {
         var stubs = new List <SqlStub>();
         stubs.Add(stub);
         _exisitngStubs.Add(stub.Query, stubs);
     }
 }
Пример #3
0
        private static String GetHash(SqlStub stub, MD5 hasher)
        {
            var parameters = String.Join(";", stub.Parameters.Select(p => p.Key + p.Value));
            var bytes      = Encoding.UTF8.GetBytes(stub.Query + parameters);

            byte[]        hash = hasher.ComputeHash(bytes);
            StringBuilder sb   = new StringBuilder();

            for (int i = 0; i < hash.Length; i++)
            {
                sb.Append(hash[i].ToString("X2"));
            }
            return(sb.ToString());
        }
Пример #4
0
        private List <TDSPacketToken> ReturnTable(SqlStub result)
        {
            List <TDSPacketToken> tokens = new List <TDSPacketToken>();

            var records = result.GetRecords().ToArray();

            if (0 < records.Length)
            {
                TDSColMetadataToken metadataToken = new TDSColMetadataToken();
                tokens.Add(metadataToken);

                foreach (var columnDefinition in result.GetColumns())
                {
                    TDSColumnData column = new TDSColumnData();

                    column.DataType        = columnDefinition.Type;
                    column.Flags.Updatable = TDSColumnDataUpdatableFlag.ReadOnly;

                    if (columnDefinition.Type == TDSDataType.NVarChar)
                    {
                        column.DataTypeSpecific = new TDSShilohVarCharColumnSpecific((ushort)columnDefinition.Size,
                                                                                     new TDSColumnDataCollation(13632521, 52));
                    }
                    else if (columnDefinition.Type == TDSDataType.DateTime2N ||
                             columnDefinition.Type == TDSDataType.DateTime)
                    {
                        column.DataTypeSpecific = (byte)columnDefinition.Size;
                        column.Flags.IsComputed = true;
                        column.Flags.IsNullable =
                            true; // TODO: Must be nullable, otherwise something is wrong with SqlClient
                    }
                    else if (columnDefinition.Type == TDSDataType.Bit)
                    {
                    }
                    else if (columnDefinition.Type == TDSDataType.BigVarBinary)
                    {
                        column.DataTypeSpecific = (ushort)columnDefinition.Size;
                    }
                    else if (columnDefinition.Type == TDSDataType.Int2)
                    {
                        column.DataTypeSpecific = (byte)columnDefinition.Size;
                    }
                    else
                    {
                        column.DataTypeSpecific = (byte)columnDefinition.Size;
                        column.Flags.IsComputed = true;
                        column.Flags.IsNullable =
                            true; // TODO: Must be nullable, otherwise something is wrong with SqlClient
                    }

                    column.Name = columnDefinition.Name;
                    metadataToken.Columns.Add(column);
                }

                foreach (var recordData in records)
                {
                    TDSRowToken rowToken = new TDSRowToken(metadataToken);

                    foreach (var value in recordData)
                    {
                        rowToken.Data.Add(value);
                    }

                    tokens.Add(rowToken);
                }
            }
            return(tokens);
        }