qtsql查询语句(QT中 sql语句 where如何加int变量)

本文目录
- QT中 sql语句 where如何加int变量
- QT中使用sql语句查询时,表名通过一个参数来传递的话,这个sql语句怎么写
- qt sql模糊查询
- qtsql获取某一行的数据
- qt中的sql能读取对方的oarcle数据库信息吗
- QT tablemodel 里,用来查询数据库中一个时间段的内容应该用怎么写啊model->setFilter()
- 如何在QTableView中显示SQL查询结果
- 在QT下使用SQL的问题:QSqlRelationalTableModel类的setFilter查找,我希望他没有查找到的时候返回信息
QT中 sql语句 where如何加int变量
u如果是字符型,能代入么?
请参看QString的arg()函数。
QString sql = QString("select * from user where id=%1 or id=%2").arg(10).arg(20);
QT中使用sql语句查询时,表名通过一个参数来传递的话,这个sql语句怎么写
select * from lineedit into var
lineedit为表名,var为参数,
qt sql模糊查询
虽然对qt不了解
但是看你的拼接语句中
arg(QString("like %") + sel_ID + QString("%")))
这段的like后貌似少了单引号?
arg(QString("like ’%") + sel_ID + QString("%’")))
你再试试?
qtsql获取某一行的数据
selectcolumnfromtable 这就是读取某一列的值了 另外,你也可以读多个列的值,用逗号隔开就好了。 还可以在后边加WHERE条件,读出符合条件的数据。
qt中的sql能读取对方的oarcle数据库信息吗
QT SQL 变量值 条件查询 插入数据
(本文只是总结网络上的教程)
在操作数据库时
SQL语句中难免会用到变量
比如
在条件值已知的情况下
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)SELECT * FROM Persons WHERE FirstName=’Bush’
在条件值是变量的情况下
INSERT INTO table_name (列1, 列2,...) VALUES (变量1, 变量2,....)SELECT * FROM Persons WHERE FirstName=’变量’
或者SELECT * FROM Persons WHERE 变量=’变量’
方法据我所知有两种
1:用query的绑定特性来做
***隐藏网址***
第一步:
简单介绍下qstring常用操作
1-----------------组合1-----
把str添加到字符串中并且返回结果的引用。
string = "Test";
string.append( "ing" ); // string == "Testing"等于operator+=()。
2-------------------组合2-------
QString firstName( "Joe" );
QString lastName( "Bloggs" );
QString fullName;
fullName = QString( "First name is ’%1’, last name is ’%2’" ).arg( firstName )
.arg( lastName );
// fullName == First name is ’Joe’, last name is ’Bloggs’
QString str;
str = QString( "Decimal 63 is %1 in hexadecimal" ).arg( 63, 0, 16 );
// str == "Decimal 63 is 3fin hexadecimal"3------------------组合3--------+,+=
QString str = "1234";
cout 《《 &str 《《 endl;
str += str;
cout 《《 qPrintable(str) 《《endl;
str = str + "5678";
cout 《《 qPrintable(str) 《《endl;
4----------------检测是否为空
QString a( "" );
a.isEmpty(); // 真
a.isNull(); // 假
QString b;
b.isEmpty(); // 真
b.isNull(); // 真
如果它不是零字符串,返回真,否则返回假。
QString name =getName();
if ( !name )
name = "Rodney";
5------------------转换
int 转 QString
int a=10;
QString b;
b=QString::number(a)
QString 转int
QString a="120"
int b;
b=a.toInt()
第二步:
回顾一下QT下操作,显示数据库的方法
底层数据库:SQLITE,MYSQL,MSSQL,ACCESS,ORACLE…….
中间层处理:QUERY,QUERYMODEL,TABLEMODEL,RetinoalTABLEMODEL顶层显示:DEBUG(MSGBOX),TABLEVIEW,TREEVIEW,TABLEWIDGET,COMBOX第三步:
下面总结下在不同中间层的情况下,待变量SQL语句的执行方法这里只介绍查询和插入的方法,关於更新方法类似1----------------------使用query做中间层
SQL查询:
SQL插入:
2----------------------使用querymodel做中间层查询:
插入:
3----------------------使用tablemodel做中间层查询:
插入:
4----------------------使用T-tablemodel做中间层查询:
插入:
1----------------------使用query做中间层(绑定或组合SQL字符串)SQL查询:(主要是用的绑定,其他捆绑方法可查询帮助文档,或者参考插入的sql语句格式)QSqlQuery query;
query.prepare("select name from student where id = ?");int id = ui-》linetext-》value(); //从界面获取id的值query.addBindValue(id); //将id值进行绑定
query.exec();
SQL插入:
(ODBC)
QSqlQuery query;
query.prepare("insert into student (id, name) values (:id, :name)");query.bindValue(0, 5);
query.bindValue(1, "sixth");
query.exec();
或者用名称进行索引
query.prepare("insert into student (id, name) values (:id, :name)");query.bindValue(":id", 5);
query.bindValue(":name", "sixth");
query.exec();
(ORACLE)
query.prepare("insert into student (id, name) values (?, ?)");query.bindValue(0, 5);
query.bindValue(1, "sixth");
query.exec();
或者省去索引
query.prepare("insert into student (id, name) values (?, ?)");query.addBindValue(5);
query.addBindValue("sixth");
query.exec();
批量插入:
QSqlQuery q;
q.prepare(“insert into student values (?, ?)”);QVariantList ints; ints 《《 10 《《 11 《《 12 《《 13;q.addBindValue(ints);
QVariantList names; names 《《 “xiaoming” 《《 “xiaoliang” 《《 “xiaogang” 《《QVariant(QVariant::String); //最后一个是空字符串,应与前面的格式相同q.addBindValue(names);
if (!q.execBatch()) //进行批处理,如果出错就输出错误qDebug() 《《 q.lastError();
2----------------------使用querymodel做中间层(组合SQL字符串法可参考3)QString name = userNameLine-》text();
QString passwd = userPwdLine-》text();
QString sql = "select name, password from users where name = ’"+ name + "’and password =’" + passwd + "’";查询:
QSqlQueryModel *model = new QSqlQueryModel;model-》setQuery(“select * from student”);插入:
3----------------------使用tablemodel做中间层(组合sql字符串法)QString name = userNameLine-》text();
QString passwd = userPwdLine-》text();
QString sql = "select name, password from users where name = ’"+ name + "’and password =’" + passwd + "’";查询
QSqlTableModel *model = new QSqlTableModel;model-》setTable("employee");
model-》setEditStrategy(QSqlTableModel::OnManualSubmit);model-》select();
model-》removeColumn(0); // don’t show the IDmodel-》setHeaderData(0, Qt::Horizontal, tr("Name"));model-》setHeaderData(1, Qt::Horizontal, tr("Salary"));QTableView *view = new QTableView;
view-》setModel(model);
view-》show();
条件查询:
QString name = ui-》lineEdit-》text();
model-》setFilter(QObject::tr(“name = ‘%1′”).arg(name)); //根据姓名进行筛选model-》select(); //显示结果
分类
model-》setSort(0,Qt::DescendingOrder);
model-》select();
插入:
int rowNum = model-》rowCount(); //获得表的行数int id = 10; model-》insertRow(rowNum); //添加一行model-》setData(model-》index(rowNum,0),id);4----------------------使用Relationaltablemodel做中间层(组合SQL字符串法)查询:
插入:
QT tablemodel 里,用来查询数据库中一个时间段的内容应该用怎么写啊model->setFilter()
这个查询用的标准的sql语句即可
"select * from MyTalbe where start_time 》= ’2018-12-12’ AND end_time 《= ’2019-12-12’"
如何在QTableView中显示SQL查询结果
QVariant headerData ( int section,Qt::Orientation orientation, int role = Qt::DisplayRole ) const 获取水平头或垂直头标题
bool setHeaderData ( int section,Qt::Orientation orientation, const QVariant & value, int role = Qt::EditRole ) 设置水平头或垂直头标题
int rowCount ( const QModelIndex & parent= QModelIndex() ) const // 返回行数
int columnCount ( const QModelIndex &index = QModelIndex() ) const // 返回列数
virtual bool removeColumns ( int column, int count, const QModelIndex & parent = QModelIndex() ) //model-》removeColumns (0)删除第一列
bool QSqlTableModel::submitAll (),//提交所有被修改的数据,然后修改的数据被保存在数据库中
void QSqlTableModel::revertAll () //撤销所有的修改,如果数据库已经被提交了修改,就不能通过撤销修改改回来了
virtual void revertRow ( int row ) //恢复指定行的改变
void QSqlTableModel::setFilter ( const QString & filter ) //筛选,按照字符串filter对数据库进行筛选,相当于SQL中的WHERE语句
bool QSqlTableModel::select () //在筛选和排序的条件下,将数据库中符合要求的在mode表格中显示出来
void QSqlTableModel::setSort ( int column, Qt::SortOrder order ) //排序操作。按照列和Qt::SortOrder排序。Qt::SortOrder有升序和降序
bool insertRow ( int row, const QModelIndex & parent = QModelIndex() ) //插入行
bool insertColumn ( int column, constQModelIndex & parent = QModelIndex() ) // 插入列
model-》setEditStrategy(QSqlTableModel::OnManualSubmit); //设置保存策略为手动提交
在QT下使用SQL的问题:QSqlRelationalTableModel类的setFilter查找,我希望他没有查找到的时候返回信息
两种方法
1 model-》select();有结果 返回true
if (model-》select())
{
你的代码
}
2 int row = model-》rowCount(); // 获得行数 行数为0就是没有
if (row》0)
{
你的代码
}

更多文章:
corrcoef函数(为什么matlab里corrcoef函数只能产生2×2的系数矩阵 求高手帮忙)
2026年1月20日 21:30
excel表格加减乘除函数公式(EXCEL中加法减法乘法除法怎么算啊!)
2025年11月13日 20:30
js字符串转date类型(js怎么把string转换成date)
2025年8月11日 06:00
onclick与click的区别(onclick和click的区别)
2025年5月31日 04:00
oracle触发器怎么设置(oracle apex 怎么设置触发器)
2025年8月13日 19:30
兼容织梦系统cms系统(什么是CMS系统目前流行的CMS系统主要有哪些各有哪些优缺点如何选择CMS系统拜托各位大神)
2025年10月5日 07:00
phpcmsv9最新利用工具(WampServer是一款WAMP软件包,该软件包由哪些软件整合而成)
2026年4月13日 18:15
写出在powerpoint中创建演示(阐述在PowerPoint中创建演示文稿的方法(至少三种))
2026年5月31日 02:30
word如何使用正则匹配(c#word查找用如何用正则表达式模糊匹配)
2025年6月14日 21:00
swift code 中国工商银行(中国工商银行的Swift code(银行国际代码)是什么)
2025年9月1日 20:45










