本文目錄一覽:
- 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.dll 和 libmysql.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)QSqlDatabase db=QSqlDatabase::addDatabase(“QMYSQL”);/對 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 previliges on *.* to ‘wangxuetao’@’localhost’ identified by ‘3791948’ with grant option; Flush privileges; //更新 (3)db.open() 函數可由於檢測數據庫是否連接成功 coutDBConnection(); 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. }
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)QSqlDatabase db=QSqlDatabase::addDatabase(“QMYSQL”);/對 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 previliges on *.* to ‘wangxuetao’@’localhost’ identified by
‘3791948’ with grant option;
Flush privileges; //更新
(3)db.open() 函數可由於檢測數據庫是否連接成功
coutDBConnection();
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. }
QT登陸驗證(連接mysql)
QSqlQuery query;
query.prepare(tr(“select id,password form 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;
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/235532.html