前面已经实现了连接数据库的功能,现在开始对数据库进行基础的操作“增删改查”。下面开始代码的演示的注释。如有什么问题可以在评论区回复或者私聊,如有大神看到有什么缺陷也欢迎指出问题所在,作为刚入门不久的我来说,很高兴能发现自己的问题。
1:创建数据表
在这里说一下C++的一点强大之处。
先简单的介绍一下C++吧;C++是一个面向过程和面向对象的语言,在学校一开始学习的是C,C是一个面向过程的语言。
C++和C比较有一点是比C好多,这个可以很明显的看出来,和感受出来,C语言,它的变量都是在函数的开始定义的,不能在九条语句之后定义或者中间定义,这个有点感觉不怎么方便,但是C++却可以在任何地方定义一个变量,这一点就是比C好。
当然,如果习惯了C后,这一点可能会有点不怎么习惯,因为C用多了之后看那些在函数内随处定义变量的话会感觉有一点很不爽,因为感觉影响了代码的观赏性,这一点作为准备毕业的我都感受到了,所以前期在学习QT和C++的时候看例程就是有一点不适应,这只是我的一个个人感觉哈,哈哈哈。
下面结束发表个人感受,开始进入正题。
代码和注释如下:
//编写创建数据表的命令并转成字符串
QString sql;
sql = "CREATE TABLE test (";
sql += "id int NOT NULL auto_increment,";
sql += "name varchar(20),";
sql += "password varchar(20),";
sql += "primary key(id))";
//准备执行命令
query.prepare(sql);
//开始执行命令,并返回一个值给bool类型的变量作为判断是否成功创建,方便查找错误
bool ok = query.exec();
if(!ok)
{
qDebug()<<"创建失败"<<query.lastError().text();
}
else
qDebug()<<"创建成功"<<"successful";
编写完之后开始测试:
很开心,创建成功了。庆祝第一步的成功,撒花!!!
在这里先开心一会,免得在确认的时候没有机会开心了。
下面去cmd后台去确认一下数据表是否创建成功。步骤在上一章已经说过了:
行了,这就很nice了,离成功更近一步了。
2:添加新成员
下面是代码及注释:
//开始获取编辑输入框的内容
QString name = ui->registnamelineEdit->text();
QString TEST;
QString password = ui->registpasswordlineEdit->text();
QString confirmpassword = ui->confirmpasswordlineEdit->text();
//这里只是做个简单的逻辑判断,不能添加空字符进来作为成员属性
if(name == nullptr || password == nullptr || confirmpassword == nullptr)
{
QMessageBox::warning(this,"账号或者密码不能为空","warning");
return;
}
if(password != confirmpassword)
{
QMessageBox::warning(this,"密码不统一","Regist failure");
return;
}
//把MySql的增加成员命令和成员属性转化成字符串
QString str = QString("insert into test(name, password) values('%1', '%2')").arg(name).arg(password);
//开始执行字符串里面的命令,这里执行相当于在cmd后台执行命令类似
query.exec(str);
//执行查询所有成员属性命令
query.exec("select * from test");
while(query.next())
{
//打印出添加成功后的成员属性ID主键值
TEST = query.value(0).toString();
qDebug()<<TEST;
}
下面这里就是简单的测试结果:
dow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTA0Nzg0NA==,size_16,color_FFFFFF,t_70)
去后台再确认一下是否添加成功。
添加成功!!!撒花庆祝。
3:修改指定的成员属性
前面完成了两步了,这里再实现一个功能,修改指定成员的属性,加油,为努力学习的自己鼓气。
代码及注释如下:
//定义用于承载想要修改的数据字符串变量。
bool ok;
QString name = "name=";
name += ui->AmendNamelineEdit->text();
QString password = "password=";
password += ui->AmendPasslineEdit->text();
QString id = "id=";
id += ui->AmendIDlineEdit->text();
QString TEST;
//简单判断一下逻辑,预防非法输入
if(name == nullptr && password == nullptr )
{
QMessageBox::warning(this,"账号和密码不能为空","warning");
return;
}
//定义一个承载修改指定成员属性的命令,这个函数也是挺强大,把一些方便的功能封装成一个对象可以直接调用使用,很方便。有点像C里面那个sprintf。
QString str = QString("update test set %1,%2 where %3;").arg(name).arg(password).arg(id);
//开始执行命令。并返回一个值用于判断是否修改成功。
ok = query.exec(str);
if(!ok)
qDebug()<<"修改失败"<<query.lastError().text();
else
qDebug()<<"修改成功"<<"successful";
//开始执行查询表格中所有的成员属性
query.exec("select * from test");
while(query.next())
{
//打印出表格内的属性
qDebug()<<query.value(1).toString()<<query.value(2).toString();
}
下面开始测试代码是否实现了功能。
NICE,修改成功,离成功之路又进了一步。
当然,要严谨一点,去cmd后台确认一下是否修改成功。
我感觉离我的霸道即邪恶的梦想又近了一步。
4:查询指定的成员
开始代码:
当然,还有注释,方便小伙伴们看懂。
//和前面一样,这里就不废话那么多了。
ui->textEdit->clear();
QString id = "id=";
id += ui->IDlineEdit->text();
//这里要提醒大家要注意一下这些命令的使用,其实命令的使用也不只是这种而已。
//还有很多种表达的方式,程序就是把自己的想法用语言来表现出来.
//大家可以根据自己的代码习惯来编写出属于自己的代码。
QString str = QString("select * from test where %1").arg(id);
//和前面一样,这里就不废话那么多了。
query.exec(str);
while(query.next())
{
//后面我就都不说,基本都一样的流程。我就直接上代码和测试结果让大家查看了。
qDebug()<<query.value(0).toString()<<query.value(1).toString()<<query.value(2).toString();
id = query.value(0).toString();
QString name = query.value(1).toString();
QString password = query.value(2).toString();
ui->textEdit->append(id);
ui->textEdit->append(name);
ui->textEdit->append(password);
}
测试结果:
在ID输入框输入想要查询的成员的ID值,然后在显示框内显示出来,
并且还会在QT中打印出来。
5:删除指定的成员
代码:
QString id = "id=";
id += ui->DeIdlineEdit->text();
QString str = QString("delete from test where %1;").arg(id);
query.exec(str);
query.exec("select * from test");
while(query.next())
{
QString id = query.value(0).toString();
QString name = query.value(1).toString();
QString pass = query.value(2).toString();
ui->DeletetextEdit->append("id:"+id);
ui->DeletetextEdit->append("name:"+name);
ui->DeletetextEdit->append("password:"+pass);
}
测试结果:
这里为了方便查看效果,我又增加了两个新的成员,然后删除指定的一个成员并显示出来。
这个是还没开始删除的显示框。
开始删除:
cmd后台查询删除结果:
这里可以开香槟开始真正意义的庆祝自己了,前面都是鼓励自己前进的。已经圆满实现了基于QT的MySql数据库的增删改查。
在这里自己也实现了小时候自己的那个梦想了,当不开心的时候想*掉谁就 * 掉谁,哈哈哈。
过一把管理员的爽。