// Npgsql.NpgsqlQuery.cs // // Author: // Dave Joyner // // Copyright (C) 2002 The Npgsql Development Team // npgsql-general@gborg.postgresql.org // http://gborg.postgresql.org/project/npgsql/projdisplay.php // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public // License as published by the Free Software Foundation; either // version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA using System; using System.IO; using System.Text; using System.Net.Sockets; namespace Npgsql { /// /// Summary description for NpgsqlQuery /// internal sealed class NpgsqlQuery { private String _commandText; private Int32 _protocolVersion; public NpgsqlQuery(String commandText, Int32 protocolVersion) { _commandText = commandText; _protocolVersion = protocolVersion; } public void WriteToStream( Stream outputStream, Encoding encoding ) { //NpgsqlEventLog.LogMsg( this.ToString() + _commandText, LogLevel.Debug ); // Send the query to server. // Write the byte 'Q' to identify a query message. outputStream.WriteByte((Byte)'Q'); if (_protocolVersion == ProtocolVersion.Version3) // Write message length. Int32 + string length + null terminator. PGUtil.WriteInt32(outputStream, 4 + encoding.GetByteCount(_commandText) + 1); // Write the query. In this case it is the CommandText text. // It is a string terminated by a C NULL character. PGUtil.WriteString(_commandText, outputStream, encoding); } } }