Example #1
0
        public void Open(MySqlConnectionString settings)
        {
            // connect to one of our specified hosts
            try
            {
                StreamCreator sc = new StreamCreator(settings.Server, settings.Port, settings.PipeName);
                stream = sc.GetStream(settings.ConnectionTimeout);
            }
            catch (Exception ex)
            {
                throw new MySqlException("Unable to connect to any of the specified MySQL hosts", ex);
            }

            if (stream == null)
            {
                throw new MySqlException("Unable to connect to any of the specified MySQL hosts");
            }

            writer = new BufferedStream(stream);
            // read off the welcome packet and parse out it's values
            Packet packet = ReadPacket();

            protocol       = packet.ReadByte();
            versionString  = packet.ReadString();
            serverVersion  = DBVersion.Parse(versionString);
            threadID       = (uint)packet.ReadInteger(4);
            encryptionSeed = packet.ReadString();

            // read in Server capabilities if they are provided
            serverCaps = 0;
            if (packet.HasMoreData)
            {
                serverCaps = (int)packet.ReadInteger(2);
            }

            Authenticate(settings.UserId, settings.Password, settings.UseCompression);

            // if we are using compression, then we use our CompressedStream class
            // to hide the ugliness of managing the compression
            if (settings.UseCompression)
            {
                stream = new CompressedStream(stream);
                writer = new BufferedStream(stream);
            }

            isOpen = true;
        }
		public MySqlField GetField()
		{
			MySqlField f = new MySqlField( driver.Encoding );
			packet = driver.ReadPacket();

			f.TableName = packet.ReadLenString();
			f.ColumnName = packet.ReadLenString();
			f.ColumnLength = (int)packet.ReadNBytes();
			f.Type = (MySqlDbType)packet.ReadNBytes();
			packet.ReadByte();									// this is apparently 2 -- not sure what it is for
			f.Flags = (ColumnFlags)packet.ReadInteger(2);		//(short)(d.ReadByte() & 0xff);
			f.NumericScale = packet.ReadByte();
			fieldsRead++;
			return f;
		}
Example #3
0
        public MySqlField GetField()
        {
            MySqlField f = new MySqlField(driver.Encoding);

            packet = driver.ReadPacket();

            f.TableName    = packet.ReadLenString();
            f.ColumnName   = packet.ReadLenString();
            f.ColumnLength = (int)packet.ReadNBytes();
            f.Type         = (MySqlDbType)packet.ReadNBytes();
            packet.ReadByte();                                                  // this is apparently 2 -- not sure what it is for
            f.Flags        = (ColumnFlags)packet.ReadInteger(2);                //(short)(d.ReadByte() & 0xff);
            f.NumericScale = packet.ReadByte();
            fieldsRead++;
            return(f);
        }
Example #4
0
        /// <summary>
        /// Reads a single packet off the stream
        /// </summary>
        /// <returns></returns>
        public Packet ReadPacket()
        {
            // if we have peeked at a packet, then return it
            if (peekedPacket != null)
            {
                Packet packet = peekedPacket;
                peekedPacket = null;
                return(packet);
            }

            Packet p = ReadPacketFromServer();

            // if this is an error packet, then throw the exception
            if (p[0] == 0xff)
            {
                p.ReadByte();
                int    errorCode = (int)p.ReadInteger(2);
                string msg       = p.ReadString();
                throw new MySqlException(msg, errorCode);
            }

            return(p);
        }