/// <summary> /// Executes the query, and returns the first column of the first row in the /// result set returned by the query. Extra columns or rows are ignored. /// </summary> /// <returns></returns> public object ExecuteScalar() { // There must be a valid and open connection. if (connection == null || connection.State != ConnectionState.Open) throw new InvalidOperationException("Connection must be valid and open"); // Data readers have to be closed first if (connection.Reader != null) throw new MySqlException("There is already an open DataReader associated with this Connection which must be closed first."); arraySql = SplitSql( cmdText ); updateCount = -1; MySqlDataReader reader = new MySqlDataReader(this, 0); reader.NextResult(); object val = null; if (reader.Read()) val = reader.GetValue(0); reader.Close(); return val; }
/// <summary> /// Overloaded. Sends the CommandText to the Connection and builds a MySqlDataReader. /// </summary> /// <returns></returns> public MySqlDataReader ExecuteReader(CommandBehavior behavior) { // There must be a valid and open connection. if (connection == null || connection.State != ConnectionState.Open) throw new InvalidOperationException("Connection must be valid and open"); // make sure all readers on this connection are closed if (connection.Reader != null) throw new InvalidOperationException("There is already an open DataReader associated with this Connection which must be closed first."); string sql = cmdText; if (0 != (behavior & CommandBehavior.KeyInfo)) { } if (0 != (behavior & CommandBehavior.SchemaOnly)) { } if (0 != (behavior & CommandBehavior.SequentialAccess)) { } if (0 != (behavior & CommandBehavior.SingleResult)) { } if (0 != (behavior & CommandBehavior.SingleRow)) { sql = String.Format("SET SQL_SELECT_LIMIT=1;{0};SET sql_select_limit=-1;", cmdText); } arraySql = SplitSql( sql ); updateCount = -1; MySqlDataReader reader = new MySqlDataReader(this, behavior); // move to the first resultset reader.NextResult(); connection.Reader = reader; return reader; }