Qt中数据库查询⽅法Qt使⽤QSqlQuery来实现数据的查询,QSqlQuery提供了进⾏SQL语句数据查询,数据处理的⽤户接⼝。
QSqlQuery的⼏个主要⽅法
1,QSqlQuery
QSqlQuery(const QString &query = QString(),QSqlDatabasedb = QSqlDatabase());
QSqlQuery(QSqlDatabasedb);
说明:构造函数
参数:query是查询语句,默认值为空语句,db为使⽤的数据库连接
返回值:⽆
例⼦:
QSqlQuery query("select sname from student",db);
QSqlRecord rec = d();
())
{
rec = d();
int snamecol = rec.indexOf("sname");
QString value = query.value(snamecol).toString();
qDebug()<<"sname:"<<value;
}
2,exec()
bool exec();
bool exec(const QString &query);
说明:执⾏默认的或指定的SQL语句
参数:query是指定的SQL查询语句
返回值:执⾏是否成功.
实例:
QSqlQuery query;
<("select sno from student");
QSqlRecord rec = d();
())
{
rec = d();
int snocol = rec.indexOf("sno");
QString value = query.value(snocol).toString();
qDebug()<<"sno:"<<value;
}
3,prepare()
bool prepare(const QString &query);
说明:设置将要执⾏的SQL语句
参数:query是指定的SQL语句
返回值:设置是否成功
实例:
QSqlQuery query;
// 设置将要执⾏的SQL查询语句,:sname是要被绑定数据的位置
query.prepare("select * from student where sname = :sname");
query.bindValue(":sname","lucy");  // 绑定数据到指定的位置
<();
QSqlRecord rec = d();
())
{
rec = d();
int snocol = rec.indexOf("sno");
int snamecol = rec.indexOf("sname");
int sclasscol = rec.indexOf("sclass");
QString value1 = query.value(snocol).toString();
QString value2 = query.value(snamecol).toString();
QString value3 = query.value(sclasscol).toString();
qDebug()<<"sno:"<<value1<<"\t"<<"sname:"<<value2<<"\t"<<"sclass:"<<value3;
}
4,bindValue()
void bindValue(const QString &placeholder,const QVariant &val,QSql::ParamTypeparamType=QSql::In);
void bindValue(int pos,const QVariant &val,QSql::ParamTypeparamType=QSql::In);
说明:设置将执⾏的SQL语句要绑定的值
参数:placeholder和pos规定要绑定的位置,val指要绑定的值,paramType默认参数类型为QSql::In 返回值:空
5,first()
bool first();
说明:移动到查询结果的第⼀条记录
参数:⽆
返回值:移动是否成功
实例:
QSqlQuery query;
<("select sno from student");
QSqlRecord rec = d();
// 移动到第⼀条语句,如果移动成功则输出此条记录
if(query.first())
{
rec = d();
int snocol = rec.indexOf("sno");
qDebug()<<"sno:"<<query.value(snocol).toString();
}
6,last()
bool last();
说明:移动到查询结果的最后⼀条记录
参数:⽆
返回值:移动是否成功
7,next()
bool next();
说明:移动到查询结果的下⼀条记录
参数:⽆
返回值:移动是否成功
8,previous();
bool previous();
说明:移动到查询结果的上⼀条记录
参数:⽆
返回值:移动是否成功
9,seek()
bool seek(int index,bool relative = false);
说明:移动到查询结果的指定记录处
参数:⽆
返回值:移动是否成功
实例:
QSqlQuery query;
<("select sno from student");
QSqlRecord rec = d();
// 移动到查询结果的第⼆条记录处,如果移动成功则输出记录内容
if(query.seek(2))
{
rec = d();
int snocol = rec.indexOf("sno");
qDebug()<<"sno:"<<query.value(snocol).toString();
}
10.clear()
void clear();
说明:清空查询结果并释放系统资源
参数:⽆
返回值:空
11,isActive()
bool isActive() const;
说明:查看当前查询是否处于激活状态,激活状态指SQL语句是否被运⾏过 参数:⽆
返回值:是否处于激活状态
实例:
QSqlQuery query;
<("select * from student");
if(query.isActive())
{
qDebug()<<"this query is active";
}
else
{
qDebug()<<"this query is not active";
}
12,isValid()
bool isValid() const;
说明:判断当前记录是否有效
参数:⽆
返回值:判断结果
实例:
QSqlQuery query;
<("select sno from student");
if(query.isValid())
{
qDebug()<<"Valid record!";
}
else
{
qDebug()<<"Invalid record!";
}
13,isNull()
bool isNull(int field) const;
说明:判断当前数据记录中某个列是否为空 参数:列的编号
返回值:是否为空
实例:
QSqlQuery query;
<("select sno from student");
QSqlRecord rec = d();
int snocol = rec.indexOf("sno");
if(query.first())
{
if(query.isNull(snocol))
{
qDebug()<<"this field is null";
}
else
{
qDebug()<<"this field is not null";
}
}
14,size()
int size() const;
说明:获取查询结果中记录的数⽬
参数:⽆
返回值:记录的数⽬,如果查询失败,则返回-1
实例:
QSqlQuery query;
<("select sno from student");
int size = query.size();    // 获取查询结果中记录的个数
qDebug()<<"the number of the record is:"<<size;
15,value()
QVariant value(int index) const;
说明:获取当前数据记录的某列的数据
参数:列的编号
返回值:数据值,返回值可以使⽤QVarient中的相应的函数获取由其基本类型表⽰其值实例:
QSqlQuery query;
<("select * from student");
QSqlRecord rec = d();
())
{
sql查询语句实例大全
rec = d();
int snocol = rec.indexOf("sno");
int snamecol = rec.indexOf("sname");
int sclasscol  = rec.indexOf("sclass");
// 获取当前记录中某⼀列的值
QString value1 = query.value(snocol).toString();
QString value2 = query.value(snamecol).toString();
QString value3 = query.value(sclasscol).toString();
qDebug()<<"sno:"<<value1<<"\t"<<"sname:"<<value2<<"\t"<<"sclass:"<<value3;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。