找回密码
 立即注册
收起左侧

《QT与QT Quick开发实战精解》书中4-5中的部分代码

5
回复
6464
查看
[复制链接]
累计签到:2 天
连续签到:1 天
来源: 2015-10-14 09:02:50 显示全部楼层 |阅读模式
1Qter豆
麻烦大家,这个是一菲老师《QT与QT Quick开发实战精解》书中4-5中的部分代码,请问第8行和第34行的代码设置密码有什么区别呢?
1  static bool createConnection()
2  {
3     QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
4
5    db.setHostName("yafeilinux");
6    db.setDatabaseName("data.db");
7    db.setUserName("yafei");
8    db.setPassword("123456");
9    if (!db.open()) {
10        //提示出错
11        return false;
12    }
13
14    QSqlQuery query;
15
16    // 创建分类表
17    query.exec("create table type(id varchar primary key, name varchar)");
18    query.exec(QString("insert into type values('0', '请选择类型')"));
19    query.exec(QString("insert into type values('01', '电视')"));
20    query.exec(QString("insert into type values('02', '空调')"));
21
22    // 创建品牌表
23    query.exec("create table brand(id varchar primary key, name varchar, "
24               "type varchar, price int, sum int, sell int, last int)");
25    query.exec(QString("insert into brand values('01', '海信', '电视', 3699, 50, 10, 40)"));
26    query.exec(QString("insert into brand values('02', '创维', '电视', 3499, 20, 5, 15)"));
27    query.exec(QString("insert into brand values('03', '海尔', '电视', 4199, 80, 40, 40)"));
28    query.exec(QString("insert into brand values('04', '王牌', '电视', 3999, 40, 10, 30)"));
29    query.exec(QString("insert into brand values('05', '海尔', '空调', 2899, 60, 10, 50)"));
30    query.exec(QString("insert into brand values('06', '格力', '空调', 2799, 70, 20, 50)"));
31
32    // 创建密码表
33    query.exec("create table password(pwd varchar primary key)");
34    query.exec("insert into password values('123456')");
35
36    return true;
37  }


最佳答案

查看完整内容

前面的是拿着用户名和密码访问数据库,后面那个是在这个数据库中创建的一个密码表,用来管理用户的。。。
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2015-10-14 09:02:51 显示全部楼层
前面的是拿着用户名和密码访问数据库,后面那个是在这个数据库中创建的一个密码表,用来管理用户的。。。
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2015-10-14 10:40:43 显示全部楼层
一叶知秋 发表于 2015-10-14 09:31
前面的是拿着用户名和密码访问数据库,后面那个是在这个数据库中创建的一个密码表,用来管理用户的。。。 ...

好的,懂了,我还有一个困惑是:
下面这个是4-5中的主函数
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    // 必须在创建数据库之前使用,不然无法在数据库中使用中文
        QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
        QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());

        if(!createConnection() || !createXml()) return 0;

    Widget w;

    LoginDialog dlg;
        if (dlg.exec() == QDialog::Accepted) {
            w.show();
            return a.exec();
        } else {
            return 0;
        }
}

是不是程序每次打开运行时都要重新创建一次数据库?那么是不是新创建的数据库就把上一次创建的数据库给替换掉了,从而达不到数据记录的功能,

麻烦这位仁兄了,十分感谢你!
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2015-10-14 14:04:13 显示全部楼层
是打开数据库, 没有新建数据库!!!上面的建表语句是不会替换原来的表的,执行到那一句exec就返回false,因为表已经存在了。。。
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2015-10-14 17:34:53 显示全部楼层
一叶知秋 发表于 2015-10-14 14:04
是打开数据库, 没有新建数据库!!!上面的建表语句是不会替换原来的表的,执行到那一句exec就返回false, ...

原来这样啊,恍然大悟,仁兄,你QQ多少啊,方便留下吗?
回复

使用道具 举报

累计签到:882 天
连续签到:3 天
2015-10-14 21:12:14 显示全部楼层
有问题发到坛子里,有时间大家会帮着解决的,我常年混迹此论坛,互相学习。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了