/* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is mozilla.org code. * * The Initial Developer of the Original Code is Jan Varga * Portions created by the Initial Developer are Copyright (C) 2003 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Neil Deakin * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include "nsISupports.idl" interface nsIVariant; /** * This interface is used to get the results from an SQL query. * The enumerator uses a row pointer which can be adjusted with * the next and previous methods. Other methods operate only on * the row selected by the pointer. * * The row pointer starts just before the first row, so you should * always call the next method once before attempting to read row * data. * * @status UNDER_DEVELOPMENT */ [scriptable, uuid(dcc0d29e-2b44-460e-b39f-89121ff8b963)] interface mozISqlResultEnumerator : nsISupports { /** * The most recent error message. */ readonly attribute AString errorMessage; /** * Moves the row pointer to the next row in the results. * Returns true if there is a next row and false if there are * no more rows. * * @return false if there are no more rows */ boolean next(); /** * Moves the row pointer to the previous row in the results. * Returns true if there is a previous row. * * @return false if there are no previous rows */ boolean previous(); /** * Moves the row pointer to just before the first row. */ void beforeFirst(); /** * Moves the row pointer to the first row. */ void first(); /** * Moves the row pointer to the last row. */ void last(); /** * Moves the row pointer by a number relative to the current row. * An error occurs if this causes the row pointer to extend past * the last row. This method may also be used to move the row pointer * back by using a negative value. * * @param aRowIndex aRowIndex the number of rows to move by */ void relative(in long aRows); /** * Moves the row pointer to a specific row. An error occurs if the index * is after the last row. * * @param aRowIndex the index of the row to move to */ void absolute(in long aRowIndex); /** * Returns true if the value at the specified column in the current row * is null. * * @param aColumnIndex the column to retrieve * @return true if the value is null */ boolean isNull(in long aColumnIndex); /** * Returns the value at the specified column in the current row as a variant. * * @param aColumnIndex the column to retrieve * @return the value as a variant */ nsIVariant getVariant(in long aColumnIndex); /** * Returns the value at the specified column in the current row as a string. * An error occurs if the value is not a string type. * * @param aColumnIndex the column to retrieve * @return the string value */ AString getString(in long aColumnIndex); /** * Returns the value at the specified column in the current row as an * integer. An error occurs if the value is not a integer type. * * @param aColumnIndex the column to retrieve * @return the integer value */ long getInt(in long aColumnIndex); /** * Returns the value at the specified column in the current row as a * float. An error occurs if the value is not a float type. * * @param aColumnIndex the column to retrieve * @return the float value */ float getFloat(in long aColumnIndex); /** * Returns the value at the specified column in the current row as a * decimal. An error occurs if the value is not a decimal type. * * @param aColumnIndex the column to retrieve * @return the decimal value */ float getDecimal(in long aColumnIndex); /** * Returns the value at the specified column in the current row as a date. * An error occurs if the value is not a date type. * * @param aColumnIndex the column to retrieve * @return the date value */ long long getDate(in long aColumnIndex); /** * Returns the value at the specified column in the current row as a * boolean. An error occurs if the value is not a boolean type. * * @param aColumnIndex the column to retrieve * @return the boolean value */ boolean getBool(in long aColumnIndex); /** * Sets the value at the specified column in the current row to null. * Changes are not committed until either the insertRow or updateRow method * is called. * * @param aColumnIndex the column to modify */ void setNull(in long aColumnIndex); /** * Sets the value at the specified column in the current row to the * default value for that column. Changes are not committed until either the * insertRow or updateRow method is called. * * @param aColumnIndex the column to modify */ void setDefault(in long aColumnIndex); /** * Sets the value at the specified column in the current row to its original * value. The row may be changed with the various setX methods and then * commited with updateRow. * * @param aColumnIndex the column to modify */ void copy(in long aColumnIndex); /** * Sets the value at the specified column in the current row to a variant. * Changes are not committed until either the insertRow or updateRow method * is called. * * @param aColumnIndex the column to modify * @param aValue the value to assign */ void setVariant(in long aColumnIndex, in nsIVariant aValue); /** * Sets the value at the specified column in the current row to a string. * Changes are not committed until either the insertRow or updateRow method * is called. * * @param aColumnIndex the column to modify * @param aValue the value to assign */ void setString(in long aColumnIndex, in AString aValue); /** * Sets the value at the specified column in the current row to an integer. * Changes are not committed until either the insertRow or updateRow method * is called. * * @param aColumnIndex the column to modify * @param aValue the value to assign */ void setInt(in long aColumnIndex, in long aValue); /** * Sets the value at the specified column in the current row to a float. * Changes are not committed until either the insertRow or updateRow method * is called. * * @param aColumnIndex the column to modify * @param aValue the value to assign */ void setFloat(in long aColumnIndex, in float aValue); /** * Sets the value at the specified column in the current row to a decimal. * Changes are not committed until either the insertRow or updateRow method * is called. * * @param aColumnIndex the column to modify * @param aValue the value to assign */ void setDecimal(in long aColumnIndex, in float aValue); /** * Sets the value at the specified column in the current row to a date. * Changes are not committed until either the insertRow or updateRow method * is called. * * @param aColumnIndex the column to modify * @param aValue the value to assign */ void setDate(in long aColumnIndex, in long long aValue); /** * Sets the value at the specified column in the current row to a boolean. * Changes are not committed until either the insertRow or updateRow method * is called. * * @param aColumnIndex the column to modify * @param aValue the value to assign */ void setBool(in long aColumnIndex, in boolean aValue); /** * Sets the value of the cells in all columns in the current row to null. * This is equivalent to calling setNullValue for every column. */ void setNullValues(); /** * Sets the value of the cells in all columns in the current row to the * default values for the columns. This is equivalent to calling * setDefaultValue for every column. */ void setDefaultValues(); /** * Sets the values of all of the cells in the current row to their original * values. The row may be changed with the various set methods and then * commited with updateRow. This method is equivalent to calling the copy * method for each column. */ void copyValues(); /** * Returns true if inserts are allowed. * * @return true if inserts are allowed */ boolean canInsert(); /** * Returns true if updates are allowed. * * @return true if updates are allowed */ boolean canUpdate(); /** * Returns true if deletes are allowed. * * @return true if deletes are allowed */ boolean canDelete(); /** * Inserts a row using the data assigned using the various setX methods. * The row was inserted successfully if 0 or 1 is returned, however if 0 * is returned, the row does not satisfy the where condition of the result * (that is, it doesn't belong in the result enumerator) and does not need * to be displayed. * * @return 1 if the row was inserted, 0 if the row was * inserted but does not fit the condition, or -1 * if an error occured. */ long insertRow(); /** * Updates the current row using the data assigned using the various setX * methods. The row was inserted successfully if 0 or 1 is returned, however * if 0 is returned, the row does not satisfy the where condition of the * result and does not need to be displayed. * * @return 1 if the row was updated, 0 if the row was updated * but does not fit the condition, or -1 if an error * occured. */ long updateRow(); /** * Deletes the current row. * * @return 1 if the row was deleted or -1 if an error occured. */ long deleteRow(); /** * Holds the SQL condition clause. */ readonly attribute AString currentCondition; };