JSON格式一种轻量级的数据交换格式,跨平台,兼容性高,具有良好的可读性和快速编写的特性。那在实际开发的过程中,我们要如何才能实现qtjson的链接呢?下面来我们就来给大家讲解一下。
如果连接以有的数据库,比如要调用其他包里的数据库,例如这个数据库的路径为C:/user/db,名字叫做datebase1.db,数据库用户名为shw,密码为123456,那么就在main函数里添加如下代码
db.setDatabaseName("C:/user/db/datebase1.db"); db.setUserName("shw"); //设置数据库用户名 db.setPassword("123456"); db.open();
这样的话,就可以在登录界面的cpp文件里和注册界面的cpp文件里调用这个数据库了,你也可以下载一个sqlite数据库,连接数据库看一下数据库中的内容。
登陆界面的话,我是写了一个判断行数的代码
//判断行数 int queryRowCount(QSqlQuery query) { int initialPos = query.at(); // Very strange but for no records .at() returns -2 int pos = 0; if (query.last()) { pos = query.at() + 1; } else { pos = 0; } // Important to restore initial pos query.seek(initialPos); return pos; }
然后再给命令(提前说明:这里的表的名字是users,表中有两列,一列是用户名user,一列是密码pwd,这都是数据库中以有的是其他包中的,这个函数只是调用):
void MainWindow::on_login_clicked() { QString username = ui - > userEidt - > text(); QString password = ui - > passwordsEidt - > text(); if (username == "") QMessageBox::warning(this, "", "用户名不能为空!"); else if (password == "") QMessageBox::warning(this, "", "密码不能为空!"); else { //sql语句在数据库中进行查询验证 QString S = QString("select * from users where user ='%1'and pwd = '%2' ") .arg(username) .arg(password); QSqlQuery query; query.exec(S); int row = queryRowCount(query); if (row == 1) { MyTcpClient * mytcpclient = new MyTcpClient; mytcpclient - > username = username; mytcpclient - > show(); this - > close(); } else QMessageBox::warning(NULL, "Error", "用户名或密码错误!!!"); } }
注册界面的话也很好实现,把查找的命令改为插入即可
void Form::on_pushButton_clicked() { QString namestr = ui - > username - > text(); QString num = ui - > pwdname - > text(); if (namestr == "" || num == "") { QMessageBox::warning(NULL, "no", "用户名和密码不能为空"); } else { QString str = QString("insert into users values('%1', '%2')") .arg(namestr) .arg(num); QSqlQuery query; query.exec(str); QMessageBox::warning(NULL, "good", "注册成功"); MainWindow * win = new MainWindow; win - > show(); this - > close(); } }
打开sqlite数据库之后,就可以看这个数据库中的数据了,这样就说明数据库链接成功了。最后大家如果想要了解更多json相关知识,敬请关注奇Q工具网。
推荐阅读: