QT怎么ssh连接mysql数据库

QT怎么ssh连接mysql数据库,第1张

在这里小编使用的是SQLyogEnt进行远程连接配置了SSH的数据。通过桌面的SQLyogEnt运行数据库客户端。

在界面中点击新建按钮,在Mysql下填写Mysql数据库的ip地址、用户名、密码、端口(默认在3306)就好,数据库名称。这里跟普通的连接数据库的方法一致。

这个时候读者可以点击一下测试连接,这个时候点击测试连接去连接数据库是不会成功的,因为数据库配置了SSH访问。如下图:

配置完成Mysql信息后,在旁边选择SSH

QT 自带的数据库是很好用的。

以下给一些我写的例子:

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); //添加数据库

dbsetDatabaseName("notedb"); //创建一个notedb的文件存储数据

dbopen(); //开启数据库

query = QSqlQuery(db); //获得访问数据库的query

queryexec(XXX); //执行指令(XXX为SQL指令)

dbclose(); //关闭数据库

大致只要知道以上例子就OK了。一般而言会将db变量作为全局变量或者数据成员,当需要访问的时候就获取一个query就可以了。

另外,要实现所提到的功能,要好好看看QString、QStringList,这两玩意主要是临时存放数据、分割数据等作用,另外,要看QFile、QDir、QFileInfo、QTextStream,这四个主要用来读取文本数据。看看QVector或者QList等来存放读出来的数据。

另外,要实现这玩意,SQL的语句不要求精通,但是基本的Create、Insert、Select、Delete等 *** 作要准确无误。否则出错了QT是看不出来的。QT不会检测SQL的准确性的。

再另外,在QT的编程中,C++和类都很重要,所以还是得看看。

意思是说,还有某查询引用默认数据库连接"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 = dbconnectionName();//获得默认连接名。

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");//不推荐。

1: windows 下登陆mysql 命令行,(1)进入cmd (2) cd mysql 安装路径/mysqlserver56/bin (3) 使用命令mysql -u root -p 然后根据提示输入密码 进入命令行 select user(); //显示当前用户 2: 在同一台电脑上利用Qt 访问数据库 (1)显示当前电脑上安装的数据库驱动 QStringList drivers = QSqlDatabase::drivers(); foreach(QString driver, drivers) qDebug() <<"/t" << driver; (2)QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");/对 QMYSQL进行 *** 作,本函数 有第二个参数 连接名 dbsetHostName("localhost");//或127001 本主机 dbsetPort(3306); dbsetDatabaseName("example"); //对数据库example进行 *** 作 dbsetUserName("wangxuetao"); //wangxuetao是一个对example数据库有 *** 作权限的账户 dbsetPassword("3791948"); 于是mysql中增加一个账户可使用 Grant all previliges on to ‘wangxuetao’@’localhost’ identified by ‘3791948’ with grant option; Flush privileges; //更新 (3)dbopen() 函数可由于检测数据库是否连接成功 cout<DBConnection(); 2 m_sqlquery = new QSqlQuery("",m_sqldb);//statement 1:connect db with sql query 3 if(result == R_OK) 4 { 5 result = m_sqlquery->exec("INSERT INTO children(fname,age) VALUES('A nn2',13)"); 6 if(!result) 7 qDebug()<<" [OK] "<<"EXEC successed"; 8 m_sqlquery->exec("SELECT FROM children c LIMIT 0,1000"); 9 while(m_sqlquery->next()) 10 { 11 qDebug()<value(0)toString()<value(1) toString(); 12 } 13 }

在生成可执行文件给老板看设计的时候,遇到了无法保存数据的问题,觉得可能是无法链接数据库,或者缺少什么内容的问题,在网上查了一些资料,最终测试可顺利完成数据库的链接。经检验,在window 7 32 or 64下都可以使用。使用的工具是Qt Creator 280,qt版本485 数据库为Sqlite 若是使用其他数据库,可能略有不同。

      具体 *** 作步骤如下:

      1)在release文件夹里创建plugins文件夹,并将QT安装目录下的plugins\sqldrivers文件夹下的libqsqlite4a qsqlite4dll(数据库不同可能一样) 复制到release\plugins文件夹(如果sqldrivers文件夹中没有你需要的驱动,可能就需要下载其他的驱动了,方法大致相同)

       2)maincpp中添加以下语句 QApplication::addLibraryPath("/plugins");

       3)在构建中选中release 后进行编译,生成exe文件。

       4)新建文件夹,在你安装qt的目录中(我的目录是D:/Qt/485/bin)查找qtsql4dll   libgcc_s_dw2-1dll mingwm10dll  QtCore4dll  QtGui4dll 然后复制到新建的文件夹中

       5)将release下的exe文件和sqldrivers文件夹复制到新建的文件夹。

       6)运行生成的exe 文件,就可测试功能了。

以上就是关于QT怎么ssh连接mysql数据库全部的内容,包括:QT怎么ssh连接mysql数据库、怎样在Qt下连接读写sqlite数据库、QT访问MYSQL数据库为什么一打开子窗口访问数据库就出问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10163998.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存