本文目录一览:
- qt5.3怎么连接mysql数据库?
- qt中怎么连接mysql数据库
- QT怎么ssh连接mysql数据库
- QT访问MYSQL数据库为什么一打开子窗口访问数据库就出问题
- QT中怎样连接MYsql数据库,远程连接数据库等
- QT登陆验证(连接mysql)
qt5.3怎么连接mysql数据库?
你必须把安装好的mysql的
C:\Program Files\MySQL\MySQL Server 5.6\lib
下的
libmysql.dll
和 libmysql.lib
拷贝进 qt的G:\Qt\Qt5.3.1\5.3\mingw482_32\bin
下
qt中怎么连接mysql数据库
- Windows 下登录mysql 命令行:
- 进入cmd
- cd mysql 安装路径/mysqlserver5.6/bin
- 使用命令
mysql -u root -p
然后根据提示输入密码 进入命令行select user();
//显示当前用户
- 在同一台电脑上利用Qt 访问数据库:
- 显示当前电脑上安装的数据库驱动:
QStringList drivers = QSqlDatabase::drivers(); foreach(QString driver, drivers) qDebug() << "\t" << driver;
- 对 QMYSQL进行操作:
于是mysql中增加一个账户可使用: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");
GRANT ALL PRIVILEGES ON *.* TO 'wangxuetao'@'localhost' IDENTIFIED BY '3791948' WITH GRANT OPTION; FLUSH PRIVILEGES; -- 更新
db.open()
函数可用于检测数据库是否连接成功。coutDBConnection();
- 显示当前电脑上安装的数据库驱动:
- 示例代码:
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数据库,远程连接数据库等
- Windows 下登录mysql 命令行:
- 进入cmd
- cd mysql 安装路径/mysqlserver5.6/bin
- 使用命令
mysql -u root -p
然后根据提示输入密码 进入命令行select user();
//显示当前用户
- 在同一台电脑上利用Qt 访问数据库:
- 显示当前电脑上安装的数据库驱动:
QStringList drivers = QSqlDatabase::drivers(); foreach(QString driver, drivers) qDebug() << "\t" << driver;
- 对 QMYSQL进行操作:
于是mysql中增加一个账户可使用: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");
GRANT ALL PRIVILEGES ON *.* TO 'wangxuetao'@'localhost' IDENTIFIED BY '3791948' WITH GRANT OPTION; FLUSH PRIVILEGES; -- 更新
db.open()
函数可用于检测数据库是否连接成功。coutDBConnection();
- 显示当前电脑上安装的数据库驱动:
- 示例代码:
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;