Qt如何连接数据库(以sqlite为例实现登录和注册界面)

如果连接以有的数据库,比如要调用其他包里的数据库,例如这个数据库的路径为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数据库,就可以看这个数据库中的数据了
Qt如何连接数据库(以sqlite为例实现登录和注册界面)_第1张图片

你可能感兴趣的:(Qt,sql,sqlite,数据库,qt,mysql)