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() 函數可由於檢測資料庫是否連接成功
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. }
❷ 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, 程序運行時打開資料庫不成功
你機器上有mysql的驅動嗎?如果你用windows平台,編譯器不帶mysql驅動的,要你自己編譯。
❹ QT連接資料庫,在其他電腦上運行時,為什麼提示無法連接資料庫
你沒有把QT的資料庫驅一起復制到其它電腦上去QtSqld4.dll或者QtSql4.dll版本不一樣,一個是debug一個是release版。
❺ qt連接sql資料庫的方法。
using
System;
using
System.Data.SqlClient;
namespace
_09_01
{
class
Class_09_01
{
public
static
void
Main(String[]
args)
{
//
連接字元串,讀者可以根據自己情況設置不同的值
string
strConn
=
"Initial
Catalog=Northwind;Data
Source=(local);User
ID=sa;Password=sa";
//
SqlConnection
對象
SqlConnection
conn
=
new
SqlConnection();
conn.ConnectionString
=
strConn;
try
{
//
打開資料庫連接
conn.Open();
Console.WriteLine("成功連接到資料庫!");
Console.WriteLine("數據源:{0}",
conn.DataSource);
Console.WriteLine("資料庫名:{0}",
conn.Database);
Console.WriteLine("客戶端名:{0}",
conn.WorkstationId);
//
在用完了資料庫連接之後記得關閉!
conn.Close();
}
catch
(Exception
e)
{
Console.WriteLine("無法連接到資料庫!報告異常:");
Console.WriteLine(e.Message);
}
}
}
}
❻ QT編程,mysql驅動編譯好了,為什麼寫測試連接資料庫,總是打開資料庫出錯大俠幫忙啊
"test"是表名吧!你要填寫資料庫名稱;mysql應該是默認就有的!
❼ 如何用Qt連接資料庫並導入文件
可以使用QT自帶的資料庫完成操作,以下是參考代碼:
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); //添加資料庫
db.setDatabaseName("note.db"); //創建一個note.db的文件存儲數據
db.open(); //開啟資料庫
query = QSqlQuery(db); //獲得訪問資料庫的query
query.exec(XXX); //執行指令(XXX為SQL指令)
db.close(); //關閉資料庫
一般而言會將db變數作為全局變數或者數據成員,當需要訪問的時候就獲取一個query就可以了。
要實現所提到的功能,要好好看看QString、QStringList,這兩玩意主要是臨時存放數據、分割數據等作用,另外,要看QFile、QDir、QFileInfo、QTextStream,這四個主要用來讀取文本數據。看看QVector或者QList等來存放讀出來的數據。
另外,要實現這玩意,SQL的語句不要求精通,但是基本的Create、Insert、Select、Delete等操作要准確無誤。否則出錯了QT是看不出來的。QT不會檢測SQL的准確性的。
❽ 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() 函數可由於檢測資料庫是否連接成功 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. }
❾ Qt5.4中連接Mysql資料庫問題
簡單,首先安裝好MYSQL資料庫,然後再安裝目錄下 MySQL\MySQL Server 5.1\bin\libmySQL.dll 這個文件拷貝到 Qt5.1.1\5.1.1\mingw48_32\bin 下面就行了,Good luck
❿ Qt5.2連接Mysql的有關問題,為什麼鏈接不上
連接Mysql資料庫需要添加資料庫的類型是QMYSQL,不是QSQLITE,QSQLITE對應的資料庫管理系統是SQLite。
QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
這樣的話,你調用下lastError,看一下為什麼。
官方文檔對QSqlDatabase open方法的說明原話:
Opens the database connection using the current connection values. Returns true on success; otherwise returns false. Error information can be retrieved using lastError().