QT查询mysqlmysql 数据库不存在中表格是否存在怎么操作

14:12 提问
如何在QSqlQueryModel中实现增删查改,然后如何与mysql数据库同步更新
本人是个菜鸟在做一个简单的同学录系统,
这是进入之后的界面
我想实现鼠标选取一个表格点击“修改同学信息”之后能对它在修改并且修改确定后能同步刷新MySQL数据库而且表格中的数据也更新。
下面是我的代码:
#include "record.h"
#include "ui_record.h"
#include "land.h"
#include "login.h"
#include "mysql_object.h"
QString str = "";
record::record(QWidget *parent) :
QDialog(parent),
ui(new Ui::record)
ui-&setupUi(this);
db = MySql_Object::GetInstance();
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
model = new QSqlQueryModel(this);
ui-&tableView-&horizontalHeader()-&setResizeMode(QHeaderView::Stretch);
sql= QString("select name,age,sex from classmate where id=%1").arg(land::Id);
model-&setQuery(sql);
model-&setHeaderData(0,Qt::Horizontal,tr("同学姓名"));
model-&setHeaderData(1,Qt::Horizontal,tr("年龄"));
model-&setHeaderData(2,Qt::Horizontal,tr("性别"));
ui-&tableView-&setModel(model);
record::~record()
void record::on_pushButton_add_2_clicked()
land *Land = new land();
Land-&show();
this-&hide();
void record::on_pushButton_change_clicked()
/*QItemSelectionModel selectionModel = ui-&tableView-&selectionModel();
QModelIndexList selected = selectionModel-&selectedRows();
foreach(const QModelIndex &index, selected)
rows.append(index.row());
str = model-&data(model-&index(rows[0],10)).toString();
//model-&setItemData(str);
ui-&tableView_2-&setModel(model);
//int row = ui-&tableView-&currentIndex().row();
//model-&removeRow(row);/
按赞数排序
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!
更新时你先update数据再select获取一遍列表就可以了
其他相似问题1687人阅读
Qt学习(50)
QSqlQuery query(db);
selectsql =&select * from sys.tables where name='car_bayonet_info'& ;//是否已经存在表car_bayonet_info
query.exec(selectsql);
if(!query.next())
SQLError = GBK(&表car_bayonet_info不存在或不完整&);
selectsql =&select * from syscolumns where id=object_id('car_bayonet_info') and name='Cross_ID'&;//表car_bayonet_info是否已经存在Cross_ID字段
query.exec(selectsql);
if(!query.next())
SQLError = GBK(&表car_bayonet_info不存在或不完整&);
selectsql =&select * from syscolumns where id=object_id('car_bayonet_info') and name='bay_name'&;
query.exec(selectsql);
if(!query.next())
SQLError = GBK(&表car_bayonet_info不存在或不完整&);
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:44093次
积分:1228
积分:1228
排名:千里之外
原创:72篇
转载:74篇
(4)(2)(1)(1)(7)(11)(8)(5)(7)(5)(6)(13)(27)(23)(26)Qt 学习之路 2(57):可视化显示数据库数据 | DevBean Tech World
&/&&/&Qt 学习之路 2(57):可视化显示数据库数据
Qt 学习之路 2(57):可视化显示数据库数据
前面我们用了两个章节介绍了 Qt 提供的两种操作数据库的方法。显然,使用QSqlQuery的方式更灵活,功能更强大,而使用QSqlTableModel则更简单,更方便与 model/view 结合使用(数据库应用很大一部分就是以表格形式显示出来,这正是 model/view 的强项)。本章我们简单介绍使用QSqlTableModel显示数据的方法。当然,我们也可以选择使用QSqlQuery获取数据,然后交给 view 显示,而这需要自己给 model 提供数据。鉴于我们前面已经详细介绍过如何使用自定义 model 以及如何使用QTableWidget,所以我们这里不再详细说明这一方法。
我们还是使用前面一直在用的 student 表,直接来看代码:
int main(int argc, char *argv[])
QApplication a(argc, argv);
if (connect("demo.db")) {
QSqlTableModel *model = new QSqlTableM
model-&setTable("student");
model-&setSort(1, Qt::AscendingOrder);
model-&setHeaderData(1, Qt::Horizontal, "Name");
model-&setHeaderData(2, Qt::Horizontal, "Age");
model-&select();
QTableView *view = new QTableV
view-&setModel(model);
view-&setSelectionMode(QAbstractItemView::SingleSelection);
view-&setSelectionBehavior(QAbstractItemView::SelectRows);
view-&setColumnHidden(0, true);
view-&resizeColumnsToContents();
view-&setEditTriggers(QAbstractItemView::NoEditTriggers);
QHeaderView *header = view-&horizontalHeader();
header-&setStretchLastSection(true);
view-&show();
return a.exec();
12345678910111213141516171819202122232425262728
int main(int argc, char *argv[]){&&&&QApplication a(argc, argv);&&&&if (connect("demo.db")) {&&&&&&&&QSqlTableModel *model = new QSqlTableModel;&&&&&&&&model-&setTable("student");&&&&&&&&model-&setSort(1, Qt::AscendingOrder);&&&&&&&&model-&setHeaderData(1, Qt::Horizontal, "Name");&&&&&&&&model-&setHeaderData(2, Qt::Horizontal, "Age");&&&&&&&&model-&select();&&&&&&&&&QTableView *view = new QTableView;&&&&&&&&view-&setModel(model);&&&&&&&&view-&setSelectionMode(QAbstractItemView::SingleSelection);&&&&&&&&view-&setSelectionBehavior(QAbstractItemView::SelectRows);//&&&&&&&&view-&setColumnHidden(0, true);&&&&&&&&view-&resizeColumnsToContents();&&&&&&&&view-&setEditTriggers(QAbstractItemView::NoEditTriggers);&&&&&&&&&QHeaderView *header = view-&horizontalHeader();&&&&&&&&header-&setStretchLastSection(true);&&&&&&&&&view-&show();&&&&} else {&&&&&&&&return 1;&&&&}&&&&return a.exec();}
这里的connect()函数还是我们前面使用过的,我们主要关注剩下的代码。
正如的代码所示,我们在main()函数中创建了QSqlTableModel对象,使用 student 表。student 表有三列:id,name 和 age,我们选择按照 name 排序,使用setSort()函数达到这一目的。然后我们设置每一列的列头。这里我们只使用了后两列,第一列没有设置,所以依旧显示为列名 id。
在设置好 model 之后,我们又创建了QTableView对象作为视图。注意这里的设置:单行选择,按行选择。resizeColumnsToContents()说明每列宽度适配其内容;setEditTriggers()则禁用编辑功能。最后,我们设置最后一列要充满整个窗口。我们的代码中有一行注释,设置第一列不显示。由于我们使用了QSqlTableModel方式,不能按列查看,所以我们在视图级别上面做文章:将不想显示的列隐藏掉。
接下来运行代码即可看到效果:
如果看到代码中很多“魔术数字”,更好的方法是,使用一个枚举将这些魔术数字隐藏掉,这也是一种推荐的方式:
enum ColumnIndex
Column_ID = 0,
Column_Name = 1,
Column_Age = 2
int main(int argc, char *argv[])
QApplication a(argc, argv);
if (connect("demo.db")) {
QSqlTableModel *model = new QSqlTableM
model-&setTable("student");
model-&setSort(Column_Name, Qt::AscendingOrder);
model-&setHeaderData(Column_Name, Qt::Horizontal, "Name");
model-&setHeaderData(Column_Age, Qt::Horizontal, "Age");
model-&select();
QTableView *view = new QTableV
view-&setModel(model);
view-&setSelectionMode(QAbstractItemView::SingleSelection);
view-&setSelectionBehavior(QAbstractItemView::SelectRows);
view-&setColumnHidden(Column_ID, true);
view-&resizeColumnsToContents();
view-&setEditTriggers(QAbstractItemView::NoEditTriggers);
QHeaderView *header = view-&horizontalHeader();
header-&setStretchLastSection(true);
view-&show();
return a.exec();
1234567891011121314151617181920212223242526272829303132333435
enum ColumnIndex{&&&&Column_ID = 0,&&&&Column_Name = 1,&&&&Column_Age = 2};&int main(int argc, char *argv[]){&&&&QApplication a(argc, argv);&&&&if (connect("demo.db")) {&&&&&&&&QSqlTableModel *model = new QSqlTableModel;&&&&&&&&model-&setTable("student");&&&&&&&&model-&setSort(Column_Name, Qt::AscendingOrder);&&&&&&&&model-&setHeaderData(Column_Name, Qt::Horizontal, "Name");&&&&&&&&model-&setHeaderData(Column_Age, Qt::Horizontal, "Age");&&&&&&&&model-&select();&&&&&&&&&QTableView *view = new QTableView;&&&&&&&&view-&setModel(model);&&&&&&&&view-&setSelectionMode(QAbstractItemView::SingleSelection);&&&&&&&&view-&setSelectionBehavior(QAbstractItemView::SelectRows);&&&&&&&&view-&setColumnHidden(Column_ID, true);&&&&&&&&view-&resizeColumnsToContents();&&&&&&&&view-&setEditTriggers(QAbstractItemView::NoEditTriggers);&&&&&&&&&QHeaderView *header = view-&horizontalHeader();&&&&&&&&header-&setStretchLastSection(true);&&&&&&&&&view-&show();&&&&} else {&&&&&&&&return 1;&&&&}&&&&return a.exec();}温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
我曾经是个诗人,现在被沦落为程序员...
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(1357)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_083065',
blogTitle:'QT中在MySQL下使用中文作为查询条件进行查询的问题',
blogAbstract:'之前在MySQL下已经进行中文的插入查询了,但以前做的查询只是 select * from \ntable的形式,然后把得到的结果集使用utf-8编码后挨个读出,以至于我就简单的认为我已经解决中文问题了。但昨天下午碰到的问题彻底粉碎了我这想\n法。我在程序中写SQL语句,其中使用中文作为查询条件,一查就崩。跟踪到SQL语句赋值完成的断点那里,发现中文该赋值的也赋上了,添加监视把那SQL\n语句拿出来跑到SQL查询器下执行,也能执行出来。于是几近崩溃,跑到焘哥那去问,原来这个就是他之前碰到的问题。\n没办法,只能回来搞。如果搞不出来,换数据库或者换驱动就麻烦了。\n先说下开发环境,windows下,QT+VS+MySQL5.1,使用的是MYSQL的connector for c++驱动。\n使用中文论坛里的搜索,看到好多人以前问过关于查询中文的问题,那里的版主回答的很详细,他说在连接上数据库后要执行set',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:4,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'我曾经是个诗人,现在被沦落为程序员...',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}

我要回帖

更多关于 mysql 数据库不存在 的文章

 

随机推荐