qt登录界面数据库mysql的简单介绍

发布时间:2022-11-10

本文目录一览:

  1. qt5.3怎么连接mysql数据库?
  2. qt中怎么连接mysql数据库
  3. QT怎么ssh连接mysql数据库
  4. QT访问MYSQL数据库为什么一打开子窗口访问数据库就出问题
  5. QT中怎样连接MYsql数据库,远程连接数据库等
  6. QT登陆验证(连接mysql)

qt5.3怎么连接mysql数据库?

你必须把安装好的mysql的 C:\Program Files\MySQL\MySQL Server 5.6\lib 下的 libmysql.dlllibmysql.lib 拷贝进 qt的G:\Qt\Qt5.3.1\5.3\mingw482_32\bin

qt中怎么连接mysql数据库

  1. Windows 下登录mysql 命令行:
    1. 进入cmd
    2. cd mysql 安装路径/mysqlserver5.6/bin
    3. 使用命令 mysql -u root -p 然后根据提示输入密码 进入命令行 select user(); //显示当前用户
  2. 在同一台电脑上利用Qt 访问数据库:
    1. 显示当前电脑上安装的数据库驱动:
      QStringList drivers = QSqlDatabase::drivers();
      foreach(QString driver, drivers)
          qDebug() << "\t" << driver;
      
    2. 对 QMYSQL进行操作:
      QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
      db.setHostName("localhost"); // 或127.0.0.1 本主机
      db.setPort(3306);
      db.setDatabaseName("example"); // 对数据库example进行操作
      db.setUserName("wangxuetao"); // wangxuetao是一个对example数据库有操作权限的账户
      db.setPassword("3791948");
      
      于是mysql中增加一个账户可使用:
      GRANT ALL PRIVILEGES ON *.* TO 'wangxuetao'@'localhost' IDENTIFIED BY '3791948' WITH GRANT OPTION;
      FLUSH PRIVILEGES; -- 更新
      
    3. db.open() 函数可用于检测数据库是否连接成功。
      coutDBConnection();
      
  3. 示例代码:
    m_sqlquery = new QSqlQuery("", m_sqldb); // statement 1: connect db with sql query
    if(result == R_OK)
    {
        result = m_sqlquery->exec("INSERT INTO children(fname,age) VALUES('Ann2',13)");
        if(!result)
            qDebug() << "[OK] EXEC successed";
        m_sqlquery->exec("SELECT * FROM children c LIMIT 0,1000");
        while(m_sqlquery->next())
        {
            qDebug() << value(0).toString() << value(1).toString();
        }
    }
    

QT怎么ssh连接mysql数据库

在这里小编使用的是SQLyogEnt进行远程连接配置了SSH的数据库。通过桌面的SQLyogEnt运行数据库客户端。 在界面中点击【新建】按钮,在Mysql下填写Mysql数据库的ip地址、用户名、密码、端口(默认在3306)就好,数据库名称。这里跟普通的连接数据库的方法一致。 这个时候读者可以点击一下【测试连接】,这个时候点击测试连接去连接数据库是不会成功的,因为数据库配置了SSH访问。如下图: 配置完成Mysql信息后,在旁边选择【SSH】

QT访问MYSQL数据库为什么一打开子窗口访问数据库就出问题

意思是说,还有某查询引用默认数据库连接qt_sql_default_connection。 如果忽略该警告,Qt官方文档里也写了,可能会出现内存泄漏:

Warning: There should be no open queries on the database connection when this function is called, otherwise a resource leak will occur. 还是不出现这个警告的好。怎么把它弄没了呢?我把一切外围的对象都排除了:仅建立一个连接,打开它,然后关闭连接,调用removeDatabase()。居然还有警告!问题已经锁定在我关闭连接的语句上:

QSqlDatabase::removeDatabase(QSqlDatabase::database().connectionName());

默认连接的名字也是默认的,需要通过connectionName()函数获得。这样写貌似没什么问题,后来调试发现,QSqlDatabase::database()静态函数实际上使默认连接的引用计数+1。上述句子相当于:

QSqlDatabase db = QSqlDatabase::database(); // 获得实例。
QString name = db.connectionName(); // 获得默认连接名。
QSqlDatabase::removeDatabase(name); // 删除默认连接。

这样,问题就清晰了,db获得了一个引用,此时引用计数为2。在调用removeDatabase()时,db对象并没有被删除,默认连接的引用计数仍为2,于是报告警告信息。 我们只需将其改为:

QString name;
{
    name = QSqlDatabase::database().connectionName();
} // 超出作用域,隐含对象QSqlDatabase::database()被删除。
QSqlDatabase::removeDatabase(name);

问题就解决了! 如果直接打默认连接名的话,代码就简单多了,不过名字不太好打(再说了,万一Qt把默认连接名改了呢!):

QSqlDatabase::removeDatabase("qt_sql_default_connection"); // 不推荐

QT中怎样连接MYsql数据库,远程连接数据库等

  1. Windows 下登录mysql 命令行:
    1. 进入cmd
    2. cd mysql 安装路径/mysqlserver5.6/bin
    3. 使用命令 mysql -u root -p 然后根据提示输入密码 进入命令行 select user(); //显示当前用户
  2. 在同一台电脑上利用Qt 访问数据库:
    1. 显示当前电脑上安装的数据库驱动:
      QStringList drivers = QSqlDatabase::drivers();
      foreach(QString driver, drivers)
          qDebug() << "\t" << driver;
      
    2. 对 QMYSQL进行操作:
      QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
      db.setHostName("localhost"); // 或127.0.0.1 本主机
      db.setPort(3306);
      db.setDatabaseName("example"); // 对数据库example进行操作
      db.setUserName("wangxuetao"); // wangxuetao是一个对example数据库有操作权限的账户
      db.setPassword("3791948");
      
      于是mysql中增加一个账户可使用:
      GRANT ALL PRIVILEGES ON *.* TO 'wangxuetao'@'localhost' IDENTIFIED BY '3791948' WITH GRANT OPTION;
      FLUSH PRIVILEGES; -- 更新
      
    3. db.open() 函数可用于检测数据库是否连接成功。
      coutDBConnection();
      
  3. 示例代码:
    m_sqlquery = new QSqlQuery("", m_sqldb); // statement 1: connect db with sql query
    if(result == R_OK)
    {
        result = m_sqlquery->exec("INSERT INTO children(fname,age) VALUES('Ann2',13)");
        if(!result)
            qDebug() << "[OK] EXEC successed";
        m_sqlquery->exec("SELECT * FROM children c LIMIT 0,1000");
        while(m_sqlquery->next())
        {
            qDebug() << value(0).toString() << value(1).toString();
        }
    }
    

QT登陆验证(连接mysql)

QSqlQuery query;
query.prepare(tr("select id,password from student where id=:id;"));
query.bindValue(":id", id);
query.exec();
if(query.next())
{
    QString password = query.value(1).toString();
    if(password == passwd)
        return true;
}
return false;