#ifndef QSQLQUERY_H<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

#define QSQLQUERY_H

 

#include <QtSql/qsql.h>

#include <QtSql/qsqldatabase.h>

#include <QtCore/qstring.h>

 

QT_BEGIN_HEADER                 //声明开始头文件

 

QT_BEGIN_NAMESPACE          //声明开始命名空间

 

QT_MODULE(Sql)

 

class QVariant;

class QSqlDriver;

class QSqlError;

class QSqlResult;

class QSqlRecord;

template <class Key, class T> class QMap;              //模板类,复杂的结构

class QSqlQueryPrivate;

 

class Q_SQL_EXPORT QSqlQuery

{

public:

//有参数的能加const的,都加上const

    QSqlQuery(QSqlResult *r);       //结果作为参数?

    QSqlQuery(const QString& query = QString(), QSqlDatabase db = QSqlDatabase());

    explicit QSqlQuery(QSqlDatabase db);    //显式地?什么意义?参数只有个db

    QSqlQuery(const QSqlQuery& other);    

    QSqlQuery& operator=(const QSqlQuery& other);

    ~QSqlQuery();

 

//以下类似没有参数的函数,大都有const后缀。具体内容说明可参考qt帮助文档

    bool isValid() const;

    bool isActive() const;

    bool isNull(int field) const;

    int at() const;                    

    QString lastQuery() const;

    int numRowsAffected() const;

    QSqlError lastError() const;

    bool isSelect() const;

    int size() const;

    const QSqlDriver* driver() const;

    const QSqlResult* result() const;

    bool isForwardOnly() const;

    QSqlRecord record() const;

 

    void setForwardOnly(bool forward);

    bool exec(const QString& query);

    QVariant value(int i) const;

 

    void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy precisionPolicy);

    QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const;

 

    bool seek(int i, bool relative = false);

    bool next();

bool previous();

//const表示未对数据的值产生改变,,没有const的函数对数据的值产生了改变

#ifdef QT3_SUPPORT

    inline QT3_SUPPORT bool prev() { return previous(); }

#endif

    bool first();

    bool last();

 

    void clear();

 

    // prepared query support

    bool exec();

    enum BatchExecutionMode { ValuesAsRows, ValuesAsColumns };

    bool execBatch(BatchExecutionMode mode = ValuesAsRows);

    bool prepare(const QString& query);

    void bindValue(const QString& placeholder, const QVariant& val,

                   QSql::ParamType type = QSql::In);

    void bindValue(int pos, const QVariant& val, QSql::ParamType type = QSql::In);

    void addBindValue(const QVariant& val, QSql::ParamType type = QSql::In);

    QVariant boundValue(const QString& placeholder) const;

    QVariant boundValue(int pos) const;

    QMap<QString, QVariant> boundValues() const;

    QString executedQuery() const;

    QVariant lastInsertId() const;

    void finish();

    bool nextResult();

 

//将私有的东西都放在QSqlQueryPrivate里面,给用户调用的都是共有的

private:

    QSqlQueryPrivate* d;

};

 

QT_END_NAMESPACE

 

QT_END_HEADER

 

#endif // QSQLQUERY_H